Opengl 旋转摄像机时的间隙
我有一个很奇怪的问题。请看这些截图: 该对象的代码:Opengl 旋转摄像机时的间隙,opengl,Opengl,我有一个很奇怪的问题。请看这些截图: 该对象的代码: void prostopadloscian(float x, float y, float z, float red, float green, float blue) { glBegin(GL_QUADS); glColor3f(red, green, blue); glNormal3f(-x,-y,-z); glVertex3f(-x,-y,-z); glN
void prostopadloscian(float x, float y, float z, float red, float green, float blue)
{
glBegin(GL_QUADS);
glColor3f(red, green, blue);
glNormal3f(-x,-y,-z);
glVertex3f(-x,-y,-z);
glNormal3f(x,-y,-z);
glVertex3f(x,-y,-z);
glNormal3f(x,-y,z);
glVertex3f(x,-y,z);
glNormal3f(-x,-y,z);
glVertex3f(-x,-y,z);
glNormal3f(-x,y,-z);
glVertex3f(-x,y,-z);
glNormal3f(x,y,-z);
glVertex3f(x,y,-z);
glNormal3f(x,y,z);
glVertex3f(x,y,z);
glNormal3f(-x,y,z);
glVertex3f(-x,y,z);
glNormal3f(-x,y,z);
glVertex3f(-x,y,z);
glNormal3f(-x,-y,z);
glVertex3f(-x,-y,z);
glNormal3f(-x,-y,-z);
glVertex3f(-x,-y,-z);
glNormal3f(-x,y,-z);
glVertex3f(-x,y,-z);
glNormal3f(-x,-y,-z);
glVertex3f(-x,-y,-z);
glNormal3f(x,-y,-z);
glVertex3f(x,-y,-z);
glNormal3f(x,y,-z);
glVertex3f(x,y,-z);
glNormal3f(-x,y,-z);
glVertex3f(-x,y,-z);
glNormal3f(x,y,z);
glVertex3f(x,y,z);
glNormal3f(x,-y,z);
glVertex3f(x,-y,z);
glNormal3f(x,-y,-z);
glVertex3f(x,-y,-z);
glNormal3f(x,y,-z);
glVertex3f(x,y,-z);
glNormal3f(-x,y,z);
glVertex3f(-x,y,z);
glNormal3f(-x,-y,z);
glVertex3f(-x,-y,z);
glNormal3f(-x,-y,-z);
glVertex3f(-x,-y,-z);
glNormal3f(-x,y,-z);
glVertex3f(-x,y,-z);
glEnd();
}
void bed()
{
glPushMatrix();
glTranslatef(-1.6, 0, 4.6);
prostopadloscian(0.2, 0.25, 0.2, 0.35, 0.16, 0.14);
glPopMatrix();
glPushMatrix();
glTranslatef(1.6, 0, 4.6);
prostopadloscian(0.2, 0.25, 0.2, 0.35, 0.16, 0.14);
glPopMatrix();
glPushMatrix();
glTranslatef(-1.6, 0, -4.6);
prostopadloscian(0.2, 0.25, 0.2, 0.35, 0.16, 0.14);
glPopMatrix();
glPushMatrix();
glTranslatef(1.6, 0, -4.6);
prostopadloscian(0.2, 0.25, 0.2, 0.35, 0.16, 0.14);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0, 0.55, 0.0);
prostopadloscian(2,0.3,5,0.85,0.85,0.95);
glPopMatrix();
}
我的display()函数从
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1.0, 1.0, 1.0, 1.0);
glEnable(GL_DEPTH_TEST);
glDisable(GL_TEXTURE_2D);
glLoadIdentity();
如何消除这种丑陋的影响?是的,那些前列腺增生症患者看起来确实有点奇怪。从这些照片中很难确定,但有一些东西需要看:
- 是否启用背面剔除
- 如果是,是否按正确的顺序指定顶点
- 您的前后剪裁平面是否相距不太远
- 深度缓冲区是否有足够的位用于所使用的剪裁平面距离
- 你的法线都指向正确的方向了吗?(提示:不。除非你很狡猾,否则每张脸只需要一次
呼叫。)glNormal
- 是否启用背面剔除
- 如果是,是否按正确的顺序指定顶点
- 您的前后剪裁平面是否相距不太远
- 深度缓冲区是否有足够的位用于所使用的剪裁平面距离
- 你的法线都指向正确的方向了吗?(提示:不。除非你很狡猾,否则每张脸只需要一次
呼叫。)glNormal