首页 > 解决方案 > opengl glDepthRange 对象在 Z 深度上消失

问题描述

在此处输入图像描述 当 z 深度增加同时围绕 x 轴旋转对象 10 度时,线条消失。我将 glDepthRange 值编辑为 -100,100 或更高,但没有任何变化。我该如何解决这个问题?

void render()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    if( gRenderQuad )
    {
        glBegin( GL_LINE_LOOP );
        glVertex3f(0.3f, 0.5f, 0.4f );
        glVertex2f( -0.5f, -0.9f );
        glVertex2f( 0.5f, -0.5f );
        glVertex2f( 0.5f, 0.5f );
        glVertex2f( -0.5f, 0.5f );
        glEnd();
    }
    glDepthRange(-100,100);
    glEnable(GL_DEPTH_TEST);

}

在此处输入图像描述

标签: c++openglopengl-compat

解决方案


我将glDepthRange值编辑为 -100、100

这是不可能的。深度范围的值必须在 [0.0, 1.0] 范围内。您可以只设置范围 [0.0, 1.0] 的子范围。见glDepthRange

如果要增加观看量,则需要使用投影矩阵。正交投影可以设置为glOrtho

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -100.0, 100.0);
glMatrixMode(GL_MODELVIEW);

推荐阅读