아래는 굴삭기를 구형화한 opengl source code 인데요...
.cpp 파일로 비쥬얼 스튜디오 8로 돌리면...

실행이 되지 않는데..경고는 뜹니다..

경고를 어떻게 고칠지 모르겠네요..
그리고 제 컴퓨터 드라이버 문제인지

compile 하면 실행이 될듯하다가 멈춰버립니다.

이런 문제를 고치려면 어떻게 해야할까요?

인터넷에서 문제를 어떻게 해결해야하나 찾아보다가 그럴수 없어서 이렇게 여기에 올립니다
도와주시면 너무 감사할게요 ㅜㅜ

전 고작 대학생 2학년이고 cad design 수업 듣고 있는데 이게 해결이 안되네요 ㅜㅜ 부탁드립니다~~


#define BITMAP_ID 0x4D42 // the universal bitmap ID
#define MAP_X 32 // size of map along x-axis
#define MAP_Z 32 // size of map along z-axis
#define MAP_SCALE 20.0f // the scale of the terrain map
#define PI 3.14159

////// Includes
#include <windows.h> // standard Windows app include
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <gl/glut.h>

////// Texture Information
BITMAPINFOHEADER bitmapInfoHeader; // temp bitmap info header
BITMAPINFOHEADER landInfo; // land texture info header
unsigned char* imageData; // the map image data
unsigned char*      landTexture; // land texture data
unsigned int land; // the land texture object

////// Terrain Data
float terrain[MAP_X][MAP_Z][3]; // heightfield terrain data (0-255); 256x256

//////Camera Variables
GLfloat cameraX, cameraY, cameraZ; // camera coordinates
GLfloat lookX, lookY, lookZ; // camera look-at coordinates
GLfloat UX,UY,UZ;

//SubWindow's name
GLuint window, global, view, global2;

//Rotation, Translation Variables
GLfloat xang=0;
GLfloat yang=0;
GLfloat zang=0;
GLfloat dx=0;
GLfloat dy=54;
GLfloat dz=0;

unsigned char *LoadBitmapFile(char *filename, BITMAPINFOHEADER *bitmapInfoHeader)// Bipmat file을 부르는 함수
{
FILE *filePtr;
BITMAPFILEHEADER bitmapFileHeader;
unsigned char *bitmapImage;
int imageIdx = 0;
unsigned char tempRGB;


filePtr = fopen(filename, "rb");
if (filePtr == NULL)
return NULL;

fread(&bitmapFileHeader, sizeof(BITMAPFILEHEADER), 1, filePtr);
if (bitmapFileHeader.bfType != BITMAP_ID)
{
fclose(filePtr);
return NULL;
}
fread(bitmapInfoHeader, sizeof(BITMAPINFOHEADER), 1, filePtr);
fseek(filePtr, bitmapFileHeader.bfOffBits, SEEK_SET);
bitmapImage = (unsigned char*)malloc(bitmapInfoHeader->biSizeImage);
if (!bitmapImage)
{
free(bitmapImage);
fclose(filePtr);
return NULL;
}
fread(bitmapImage, 1, bitmapInfoHeader->biSizeImage, filePtr);
if (bitmapImage == NULL)
{
fclose(filePtr);
return NULL;
}
for (imageIdx = 0; imageIdx < bitmapInfoHeader->biSizeImage; imageIdx+=3)
{
tempRGB = bitmapImage[imageIdx];
bitmapImage[imageIdx] = bitmapImage[imageIdx + 2];
bitmapImage[imageIdx + 2] = tempRGB;
}
fclose(filePtr);
return bitmapImage;
}

void InitializeTerrain()
{
for (int z = 0; z < MAP_Z; z++)
{
for (int x = 0; x < MAP_X; x++)
{
terrain[x][z][0] = float(x)*MAP_SCALE;
terrain[x][z][1] = (float)imageData[(z*MAP_Z+x)*3];
terrain[x][z][2] = -float(z)*MAP_SCALE;
}
}
}

void LoadTextures(void)  //지형 텍스쳐 작업
{
landTexture = LoadBitmapFile("Gravel.bmp", &landInfo);
if (!landTexture)
{
printf("Can't load landTexture file.");
}
glGenTextures(1, &land);                  
glBindTexture(GL_TEXTURE_2D, land);       
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, landInfo.biWidth, landInfo.biHeight, GL_RGB, GL_UNSIGNED_BYTE, landTexture);
}

void Initialize()
{
glClearColor(0.3, 0.6, 1.0, 1.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glEnable(GL_TEXTURE_2D);
imageData = LoadBitmapFile("Terrain.bmp", &bitmapInfoHeader);
InitializeTerrain();
LoadTextures();
}

void CleanUp()
{
free(imageData);
free(landTexture);
}

void drawvehicle()
{
glTranslatef(dx,dy,dz);
glRotatef(yang,0.0,1.0,0.0);

glBegin(GL_POLYGON);
glColor3f(0.0,0.0,0.0);
glVertex3f(-15,5,-15);
glVertex3f(-15,5,15);
glVertex3f(35,5,15);
glVertex3f(35,5,-15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(35,20,15);
glVertex3f(35,20,-15);
glVertex3f(35,5,-15);
glVertex3f(35,5,15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(35,20,15);
glVertex3f(35,5,15);
glVertex3f(-15,5,15);
glVertex3f(-15,20,15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-15,20,15);
glVertex3f(-15,20,-15);
glVertex3f(-15,5,-15);
glVertex3f(-15,5,15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-15,5,-15);
glVertex3f(-15,20,-15);
glVertex3f(35,20,-15);
glVertex3f(35,5,-15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(35,20,15);
glVertex3f(35,20,-15);
glVertex3f(-15,20,-15);
glVertex3f(-15,20,15);
glEnd();

glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(-6,50,6);
glVertex3f(6,50,6);
glVertex3f(6,50,-6);
glVertex3f(-6,50,-6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(6,50,6);
glVertex3f(6,50,-6);
glVertex3f(6,20,-10);
glVertex3f(6,20,10);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(6,50,-6);
glVertex3f(6,20,-10);
glVertex3f(-10,20,-10);
glVertex3f(-6,50,-6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-6,50,-6);
glVertex3f(-10,20,-10);
glVertex3f(-10,20,10);
glVertex3f(-6,50,6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-6,50,6);
glVertex3f(-10,20,10);
glVertex3f(6,20,10);
glVertex3f(6,50,6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(6,20,10);
glVertex3f(6,20,-10);
glVertex3f(-10,20,-10);
glVertex3f(-10,20,10);
glEnd();

glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0);
glVertex3f(28,30,-3);
glVertex3f(30,30,-3);
glVertex3f(30,30,-5);
glVertex3f(28,30,-5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(30,30,-3);
glVertex3f(30,20,-3);
glVertex3f(30,20,-5);
glVertex3f(30,30,-5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(30,30,-5);
glVertex3f(30,20,-5);
glVertex3f(28,20,-5);
glVertex3f(28,30,-5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,30,-5);
glVertex3f(28,20,-5);
glVertex3f(28,20,-3);
glVertex3f(28,30,-3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,30,-3);
glVertex3f(30,30,-3);
glVertex3f(30,20,-3);
glVertex3f(28,20,-3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,20,-3);
glVertex3f(30,20,-3);
glVertex3f(30,20,-5);
glVertex3f(28,20,-5);
glEnd();

glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0);
glVertex3f(28,30,5);
glVertex3f(30,30,5);
glVertex3f(30,30,3);
glVertex3f(28,30,3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(30,30,5);
glVertex3f(30,20,5);
glVertex3f(30,20,3);
glVertex3f(30,30,3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,30,3);
glVertex3f(30,30,3);
glVertex3f(30,20,3);
glVertex3f(28,20,3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,30,3);
glVertex3f(28,20,3);
glVertex3f(28,20,5);
glVertex3f(28,30,5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,30,5);
glVertex3f(30,30,5);
glVertex3f(30,20,5);
glVertex3f(28,20,5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(28,20,5);
glVertex3f(30,20,5);
glVertex3f(30,20,3);
glVertex3f(28,20,3);
glEnd();

glBegin(GL_POLYGON);
glColor3f(0.5,0.0,0.0);
glVertex3f(0,42,10);
glVertex3f(29,32,7);
glVertex3f(29,32,3);
glVertex3f(0,42,6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0,38,10);
glVertex3f(29,28,7);
glVertex3f(29,28,3);
glVertex3f(0,38,6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0,42,10);
glVertex3f(0,38,10);
glVertex3f(29,28,7);
glVertex3f(29,32,7);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(29,32,7);
glVertex3f(29,28,7);
glVertex3f(29,28,3);
glVertex3f(29,32,3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(29,32,3);
glVertex3f(29,28,3);
glVertex3f(0,38,6);
glVertex3f(0,42,6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0,38,6);
glVertex3f(0,42,6);
glVertex3f(0,42,10);
glVertex3f(0,38,10);
glEnd();

glBegin(GL_POLYGON);
glColor3f(0.5,0.0,0.0);
glVertex3f(0,42,-10);
glVertex3f(29,32,-7);
glVertex3f(29,32,-3);
glVertex3f(0,42,-6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0,38,-10);
glVertex3f(29,28,-7);
glVertex3f(29,28,-3);
glVertex3f(0,38,-6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0,42,-10);
glVertex3f(0,38,-10);
glVertex3f(29,28,-7);
glVertex3f(29,32,-7);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(29,32,-7);
glVertex3f(29,28,-7);
glVertex3f(29,28,-3);
glVertex3f(29,32,-3);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(29,32,-3);
glVertex3f(29,28,-3);
glVertex3f(0,38,-6);
glVertex3f(0,42,-6);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0,38,-6);
glVertex3f(0,42,-6);
glVertex3f(0,42,-10);
glVertex3f(0,38,-10);
glEnd();

glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(-15,20,15);
glVertex3f(-15,20,5);
glVertex3f(-15,5,5);
glVertex3f(-15,5,15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,10);
glVertex3f(-15,20,15);
glVertex3f(-15,20,5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,10);
glVertex3f(-15,20,5);
glVertex3f(-15,5,5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,10);
glVertex3f(-15,5,5);
glVertex3f(-15,5,15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,10);
glVertex3f(-15,5,15);
glVertex3f(-15,20,15);
glEnd();

glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(-15,20,-15);
glVertex3f(-15,20,-5);
glVertex3f(-15,5,-5);
glVertex3f(-15,5,-15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,-10);
glVertex3f(-15,20,-15);
glVertex3f(-15,20,-5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,-10);
glVertex3f(-15,20,-5);
glVertex3f(-15,5,-5);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,-10);
glVertex3f(-15,5,-5);
glVertex3f(-15,5,-15);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-25,12.5,-10);
glVertex3f(-15,5,-15);
glVertex3f(-15,20,-15);
glEnd();

glTranslatef(0,65,0);
glRotatef(zang,0.0,0.0,1.0);
glTranslatef(0,-65,0);

glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0);
glVertex3f(15,80,15);
glVertex3f(15,50,15);
glVertex3f(15,50,-15);
glVertex3f(15,80,-15);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(15,80,-15);
glVertex3f(15,50,-15);
glVertex3f(-15,50,-15);
glVertex3f(-15,80,-15);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(-15,80,-15);
glVertex3f(-15,50,-15);
glVertex3f(-15,80,15);
glVertex3f(-15,50,15);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(-15,80,15);
glVertex3f(15,80,15);
glVertex3f(15,50,15);
glVertex3f(-15,50,15);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(15,80,15);
glVertex3f(15,80,-15);
glVertex3f(-15,80,-15);
glVertex3f(-15,80,15);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex3f(-15,50,15);
glVertex3f(15,50,15);
glVertex3f(15,50,-15);
glVertex3f(-15,50,-15);
glEnd();

glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0);
glVertex3f(15,63,5);
glVertex3f(15,63,-5);
glVertex3f(15,57,0);
glEnd();

glBegin(GL_POLYGON);
glColor3f(0.0,0.0,0.0);
glVertex3f(15,71,2);
glVertex3f(15,69,2);
glVertex3f(15,69,8);
glVertex3f(15,71,8);
glEnd();

glBegin(GL_POLYGON);
glColor3f(0.0,0.0,0.0);
glVertex3f(15,71,-2);
glVertex3f(15,69,-2);
glVertex3f(15,69,-8);
glVertex3f(15,71,-8);
glEnd();
}

void Render() //지형과 차량을 그리는 함수
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.3, 0.6, 1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Initialize();
glBindTexture(GL_TEXTURE_2D, land);
for (int z = 0; z < MAP_Z-1; z++)
{
glBegin(GL_TRIANGLE_STRIP);

for (int x = 0; x < MAP_X-1; x++)
{
glColor3f(terrain[x][z][1]/255.0f, terrain[x][z][1]/255.0f, terrain[x][z][1]/255.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(terrain[x][z][0], terrain[x][z][1], terrain[x][z][2]);

glTexCoord2f(1.0f, 0.0f);
glColor3f(terrain[x+1][z][1]/255.0f, terrain[x+1][z][1]/255.0f, terrain[x+1][z][1]/255.0f);
glVertex3f(terrain[x+1][z][0], terrain[x+1][z][1], terrain[x+1][z][2]);

glTexCoord2f(0.0f, 1.0f);
glColor3f(terrain[x][z+1][1]/255.0f, terrain[x][z+1][1]/255.0f, terrain[x][z+1][1]/255.0f);
glVertex3f(terrain[x][z+1][0], terrain[x][z+1][1], terrain[x][z+1][2]);

glColor3f(terrain[x+1][z+1][1]/255.0f, terrain[x+1][z+1][1]/255.0f, terrain[x+1][z+1][1]/255.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(terrain[x+1][z+1][0], terrain[x+1][z+1][1], terrain[x+1][z+1][2]);
}
glEnd();
}

glEnable(GL_BLEND);
glDepthMask(GL_FALSE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glColor4f(0.5f, 0.5f, 1.0f, 0.7f);
glDepthMask(GL_TRUE);
glDisable(GL_BLEND);
glTranslatef(320.0,200,-320.0);
drawvehicle();
glutSwapBuffers();
glutPostRedisplay();

}

void windis()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutSwapBuffers();
}

void winre(int w, int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

}

void globalre(int w, int h) //Global View의 Reshape Function
{
//Global view
cameraX=(400)*cos((yang)*PI/180)+dx+320;
cameraY= 50+dy+400;
cameraZ=-(400)*sin((yang)*PI/180)+dz-320;
lookX=(15)*cos(zang*PI/180)*cos(yang*PI/180)+dx+320;
lookY= 45+dy+200;
lookZ=-(15)*cos(zang*PI/180)*sin(yang*PI/180)+dz-320;
UX=0.0;
UY=1.0;
UZ=0.0;

glClearColor(0.3, 0.6, 1.0, 1.0);
glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-5.0,5.0,-5.0,5.0,13.0,2000);
gluLookAt(cameraX, cameraY, cameraZ, lookX, lookY, lookZ, UX, UY, UZ);
glutPostRedisplay();
}

void globalre2(int w, int h) //Global View2의 Reshape Function
{
cameraX=320;
cameraY=1000;
cameraZ=-320;
lookX=320;
lookY=0;
lookZ=-320;
UX=1.0;
UY=0.0;
UZ=0.0;

glClearColor(0.3, 0.6, 1.0, 1.0);
glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-5.0,5.0,-5.0,5.0,13.0,1000);
gluLookAt(cameraX, cameraY, cameraZ, lookX, lookY, lookZ, UX, UY, UZ);
glutPostRedisplay();
}


void viewre(int w, int h) //Vehicle Manipulator View의 Reshape Function
{
/* Manipulator끝단의 좌표 */
cameraX = (15)*cos(zang*PI/180)*cos(yang*PI/180)+dx+320;
cameraY =  70+dy+(15)*sin(zang*PI/180)+200;
cameraZ = -(15)*cos(zang*PI/180)*sin(yang*PI/180)+dz-320;

/* Manipulator끝단이 바라보는 점 */
lookX = (16)*cos(zang*PI/180)*cos(yang*PI/180)+dx+320;
lookY =  70+dy+(16)*sin(zang*PI/180)+200;
lookZ = -(16)*cos(zang*PI/180)*sin(yang*PI/180)+dz-320;

/* Manipulator끝단에 달린 Camera의 UpVector */
UX=-cos(xang*PI/180)*cos(yang*PI/180)*sin(zang*PI/180)+sin(xang*PI/180)*sin(yang*PI/180);
UY=cos(xang*PI/180)*cos(zang*PI/180);
UZ=cos(xang*PI/180)*sin(yang*PI/180)*sin(zang*PI/180)+cos(yang*PI/180)*sin(xang*PI/180);

glClearColor(0.3, 0.6, 1.0, 1.0);
glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-5.0,5.0,-5.0,5.0,10.0,1000);
gluLookAt(cameraX, cameraY, cameraZ, lookX, lookY, lookZ, UX, UY, UZ);
glutPostRedisplay();
}


void redisplayall()
{
Render();

glutSetWindow(global);
globalre(480,320);
glutPostRedisplay();

glutSetWindow(view);
viewre(480,320);
glutPostRedisplay();
}


void keyboard(unsigned char key, int x, int y)//차량을 움직이기위한 Keyboard 함수
{
switch (key) {

case 'w':
if(dx<=298 && -298<=dx) dx=dx+cos(PI*yang/180);
else dx=dx-cos(PI*yang/180);
if(dz<=298 && -298<=dz) dz=dz-sin(PI*yang/180);
else dz=dz+sin(PI*yang/180);
dy = terrain[int((dx+320)/20)][int((dz+320)/20)][1]-200;
break;
case 'a':
yang=yang+2;
dy = terrain[int((dx+320)/20)][int((dz+320)/20)][1]-200;
break;
case 'k':
if(zang<45) zang=zang+5;
else if(zang<45) zang=zang;
dy = terrain[int((dx+320)/20)][int((dz+320)/20)][1]-200;
break;

case 'i':
if(zang>-45) zang=zang-5;
else if(zang>-45) zang=zang;
dy = terrain[int((dx+320)/20)][int((dz+320)/20)][1]-200;
break;
case 27:

exit(0);
}

redisplayall();
glutPostRedisplay();

}


void main(int argc, char** argv)
{

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE|GLUT_DEPTH);
glutInit(&argc , argv);
glutInitWindowSize(990,700);
glutInitWindowPosition(0,0);

window=glutCreateWindow("2012_Term project");
glutDisplayFunc(windis);
glutReshapeFunc(winre);

global=glutCreateSubWindow(window,10,20,480,320);
glutReshapeFunc(globalre);
glutDisplayFunc(Render);
glutIdleFunc(Render);
glutKeyboardFunc(keyboard);

view=glutCreateSubWindow(window,500,20,480,320);
glutReshapeFunc(viewre);
glutDisplayFunc(Render);
glutIdleFunc(Render);
glutKeyboardFunc(keyboard);

global2=glutCreateSubWindow(window,10,360,480,320);
glutReshapeFunc(globalre2);
glutDisplayFunc(Render);
glutIdleFunc(Render);
glutKeyboardFunc(keyboard);

glutMainLoop();
CleanUp();
}