距离较远时的glutSolidSphere照明问题

问题描述

由于某种原因,当使用 glutSolidSphere 并且相机离物体相对较远时,我会得到奇怪的不规则照明效果/闪烁。见下文:

enter image description here

这也发生在 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);

见:https://gamedev.stackexchange.com/a/55516

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...