📄 main.cpp
字号:
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(100.0, 0.0f, -90.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(100.0, 40.0f, -90.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-100.0, 40.0f, -90.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0, 0.0f,-90.0);
glEnd();//*/
tex3++;
//RenderScene();
}
}
void RenderScene()
{
//glClearColo r(0.0f, 255.0f, 255.0f, 0.0f);
//if(v>15)
//v=12;
//glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
/*if(tex3>9 && tex3 <=19)
{glBindTexture(GL_TEXTURE_2D, texture[17+tex3]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(10.0, -5.0f, -100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(10.0, 5.0f, -100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-10.0, 5.0f, -100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-10.0, -5.0f,-100.0);
glEnd();
}
if(tex3>19 && tex3 <=29)
{glBindTexture(GL_TEXTURE_2D, texture[7+tex3]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(10.0, -5.0f, -100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(10.0, 5.0f, -100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-10.0, 5.0f, -100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-10.0, -5.0f,-100.0);
glEnd();*/
if(tex2<=200)
{
glBindTexture(GL_TEXTURE_2D, texture[26]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(65.0, -40.0f, -90.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(65.0, 40.0f, -90.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-90.0, 40.0f, -90.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-90.0, -40.0f,-90.0);
glEnd();
//sleep(20000);
}
else
{
if(st.position.x>-100 && st.position.x <100 && st.position.z>1 && st.position.z <40)
nj=nj+1;
if(nj==3)
exit(1);
bbox *bbArray=NULL;
cvector bb1;
bb1.x=0;
bb1.z=0;
cvector bb2;
bb2.x=0;
bb2.z=0;
cvector bb3;
bb3.x=0;
bb3.z=0;
cvector bb4;
bb4.x=0;
bb4.z=0;
//if(Inside_BoundingBox(st.position.x,st.position.z-30))
// v=0;
if(o==-1||o==0)
{
v=v+a*0.016;
}
if(o==-1 && v<0&&v>-1)
v=0;
if(o==0 && v>0&&v<-1)
v=0;
//t=1/FPS();
//st.acceleration=calc_acc(a,angle);
//st.velocity=setv(v,angle);
//st.position=calc_position(st.velocity,0.016*10,st.position,st.acceleration);
if(deltaAngle)
{
st.position.z=st.position.z-v*cos(deltaAngle*1.5/90*angle)*1.6;
st.position.x=st.position.x+v*sin(deltaAngle*1.5/90*angle)*1.6;
}
else
st.position.z=st.position.z-v*1.6;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The matrix
//////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** ////////////////////
// Give OpenGL our position, then view, then up vector
// We want the model to rotate around the axis so we give it a rotation
// value, then increase/decrease it. You can rotate right of left with the arrow keys.
// glRotatef(g_RotateX, 0, 1.0f, 0); // Rotate the object around the Y-Axis
// g_RotateX += g_RotationSpeed; // Increase the speed of rotation
// Since we know how many objects our model has, go through each of them.
//glTranslated(0,0,0);`
move=38.5;
gluLookAt(-60*sin(deltaAngle/move)+st.position.x, 25.5f,10+60*cos(deltaAngle/move)+st.position.z, st.position.x+20*sin(deltaAngle/move), 15.5f, st.position.z-20*cos(deltaAngle/move), 0, 1, 0);
/*if(y==1)
gluLookAt(0+st.position.x, 25.5f, 60.0+st.position.z, st.position.x, 15.5f, st.position.z+20, 0, 1, 0);
if(y==2)
gluLookAt(15+ st.position.x,25.5f, 60+st.position.z, st.position.x-5, 15.5f,st.position.z+10, 0,1,0);
if(y==3)
gluLookAt(30+ st.position.x,25.5f, st.position.z, st.position.x-20, 15.5f,st.position.z, 0,1,0);
*/// gluLookAt(0,0,5,0,0,,0,1,0);
glBindTexture(GL_TEXTURE_2D, texture[17]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(50.0, 0.0f, -100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(50.0, 0.0f, -120.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-50.0, 0.0f, -120.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-50.0, 0.0f, -100.0);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[18]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(100.0, 0.0f, 130.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(100.0, 0.0f, 160.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(130.0, 0.0f, 160.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(130.0, 0.0f, 130.0);
glEnd();
//Making Grass Fields
glBindTexture(GL_TEXTURE_2D, texture[3]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1000.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-500.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-500.0, 0.0f,-2500.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1000.0, 0.0f, -2500.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1000.0, 0.0f, -2500.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-500.0, 0.0f, -2500.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-500.0, 0.0f,-1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-500.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(0.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(0.0, 0.0f,-3000.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-500.0, 0.0f, -3000.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-500.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(0.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(0.0, 0.0f,-1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-500.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(500.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(500.0, 0.0f,-3000.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0, 0.0f, -3000.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(500.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(500.0, 0.0f,-1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(500.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1000.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1000.0, 0.0f,-3000.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(500.0, 0.0f, -3000.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(500.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1000.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1000.0, 0.0f,-1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(500.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1000.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1500.0, 0.0f, -4500.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1500.0, 0.0f,-3000.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1000.0, 0.0f, -3000.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1000.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1500.0, 0.0f, -3000.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1500.0, 0.0f,-1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1000.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1500.0, 0.0f, -2800.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2000.0, 0.0f, -2300.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(2000.0, 0.0f,-1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1500.0, 0.0f, -1100.0-7*19*100);
glEnd();
//Making the City
glBindTexture(GL_TEXTURE_2D, texture[9]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(100.0, 0.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(100.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(400.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(400.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[10]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(400.0, 0.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(400.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(700.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(700.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[11]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(700.0, 0.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(700.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1000.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1000.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[9]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1000.0, 0.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1000.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1300.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1300.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[10]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1300.0, 0.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1300.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1600.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1600.0, 0.0f, -1100.0-7*19*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[11]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1600.0, 0.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1600.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(2000.0, 160.0f, -1100.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2000.0, 0.0f, -1100.0-7*19*100);
glEnd();
// another city view
for(int i=19;i>=0;i--)
{
glBindTexture(GL_TEXTURE_2D, texture[9]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(2000.0, 0.0f, -1100.0-7*i*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2000.0, 160.0f, -1100.0-7*i*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(2000.0, 160.0f, -700.0-7*i*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2000.0, 0.0f, -700.0-7*i*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[10]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(2000.0, 0.0f, -700.0-7*i*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2000.0, 160.0f, -700.0-7*i*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(2000.0, 160.0f, -300.0-7*i*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2000.0, 0.0f, -300.0-7*i*100);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[11]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(2000.0, 0.0f, -300.0-7*i*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2000.0, 160.0f, -300.0-7*i*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(2000.0, 160.0f, 100.0-7*i*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2000.0, 0.0f, 100.0-7*i*100);
glEnd();
}
//lAST WAll
glBindTexture(GL_TEXTURE_2D, texture[6]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(2000.0, 0.0f, 100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2000.0, 40.0f, 100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1600.0, 40.0f, 100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1600.0, 0.0f, 100.0);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1600.0, 0.0f, 100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1600.0, 40.0f, 100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1200.0, 40.0f, 100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(1200.0, 0.0f, 100.0);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(1200.0, 0.0f, 100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1200.0, 40.0f, 100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(800.0, 40.0f, 100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(800.0, 0.0f, 100.0);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(800.0, 0.0f, 100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(800.0, 40.0f, 100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(400.0, 40.0f, 100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(400.0, 0.0f, 100.0);
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(400.0, 0.0f, 100.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(400.0, 40.0f, 100.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(100.0, 40.0f, 100.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(100.0, 0.0f, 100.0);
glEnd();
/*
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(2000.0, 0.0f, -4800.0-7*19*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2000.0, 40.0f, -4800.0-7*19*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f(2000.0, 40.0f, -2800.0-7*19*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2000.0, 0.0f, -2800.0-7*19*100);
glEnd();
*/
glBindTexture(GL_TEXTURE_2D, texture[0]);
for(int i=0;i<20;i++)
{
//MAKING THE ROAD
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0, 0.0f, -100.0-7*i*100);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-100.0, 0.0f, 100.0-7*i*100);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 100.0, 0.0f, 100.0-7*i*100);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 100.0, 0.0f, -100.0-7*i*100);
glEnd();
glBegin(GL_QUADS);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -