Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 旋转摄像机时的间隙_Opengl - Fatal编程技术网

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
    呼叫。)

如果这种影响是间歇性的,我认为可能会发生Z-战斗。你有没有试过用画笔画桌面?

如果这种效果是间歇性的,我想可能会发生Z-fighting。你试过画桌面吗?

你一个问题也没问。你的问题是什么?如何消除这种丑陋的影响?你一个问题都没问。你的问题是什么?如何消除这种丑陋的效果?我没有设置背面,所以它是默认的。LOL表示“是的,那些Protopadloscians看起来确实有点奇怪。”默认情况下,背面剔除被禁用。那我的钱就花在飞机上了。你是否有可能做一些类似于近=0.001,远=1000000的事情?法线不会造成问题。我可以评论出来,但这并不能解决问题。事实上,我认为他们不会。但不管怎样,它们都是错误的——当你尝试打开照明时,你会注意到:)我没有设置背面,所以默认情况下是这样。LOL表示“是的,那些Protopadloscians看起来确实有点奇怪。”默认情况下,背面消隐是禁用的。那我的钱就花在飞机上了。你是否有可能做一些类似于近=0.001,远=1000000的事情?法线不会造成问题。我可以评论出来,但这并不能解决问题。事实上,我认为他们不会。但不管怎样,它们都是错误的——当您尝试打开照明时,您会注意到:)不,我的意思是在渲染桌面之前调用glPolygonOffset(2f,2f)(如果不起作用,请尝试第一个负值)。我很确定这会解决您遇到的问题。不,我的意思是在渲染桌面之前调用glPolygonOffset(2f,2f)(如果不起作用,请尝试第一个负值)。我相当肯定这会解决你的问题。