问题描述
由于某种原因,当使用 glutSolidSphere 并且相机离物体相对较远时,我会得到奇怪的不规则照明效果/闪烁。见下文:
这也发生在 glutSolidCube 中,我假设其他人也是如此。
我已经尝试了在类似问题中可以找到的所有内容,但没有成功
我尝试启用以下所有内容以及以下内容的不同组合,并尝试在多个地方这样做
glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_norMALIZE);
glDepthFunc(GL_LEQUAL);
并且还删除了所有 glEnable(GL_TEXTURE_2D);任何地方
当我使用 glEnable(GL_LIGHT0);
打开照明并使用 glShadeModel(GL_SMOOTH) 和 glShadeModel(GL_FLAT) 以及如果我不启用 GL_COLOR_MATERIAL 甚至仅使用这样的位置灯时,就会出现问题:
float light_position[] = {100.0f,100.0f,1.0f};
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
这还能是什么?
解决方法
终于找到了永远的问题。显然,在 gluPerspective 视图中为 zNear 使用非常低的值(即使高于零)会导致此问题。
以下解决了问题:
gluPerspective(90,(float) width / (float) height,0.1f,Z_RANGE);