linux - 球体边缘的伪影 - 照明不正确?

标签 linux opengl nvidia lighting

我正在使用 glutSolidSphere 渲染许多球体。边界处有线条,未以正确的颜色呈现:

lines at the boundary

如果我没记错的话,我的 AMD 卡没有这个问题,这是 nVidia 上的一个新问题。

相关的 opengl 设置(不确定我得到了所有设置,它们分散在代码中)是:

// set 2 lights, both having specular, ambient and diffuse components.
// and then:
glDisable(GL_CULL_FACE);
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,1);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,1);
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);
glShadeModel(GL_SMOOTH);
glEnable(GL_RESCALE_NORMAL);

最佳答案

如果您关闭 GL_LINE_SMOOTH 和 GL_POLYGON_SMOOTH,您还会遇到这个问题吗?

你的混合模式是什么?您是否从最远->最近绘制球体以获得正确的混合(并不是说您可以保证球体中的三角形将以正确的顺序呈现)。

如果这是问题所在,我建议放弃多边形平滑并使用 FSAA。

关于linux - 球体边缘的伪影 - 照明不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214099/

相关文章:

python - 如何在 NVIDIA Jetson TX2 上从 openCV(从源代码构建)运行 python?

linux - 从 bash 脚本中的文本文件验证帐户创建

java - classpath echo 在 linux 中返回空白

cocoa - Hillegass : Cocoa Prog 3rd Ed: Ch. 33 在 OpenGL : Where's the torus? 上

c++ - 包含包含数组的文件时出现链接错误

cuda - NvLink 或 PCIe,如何指定互连?

linux - 从 Go 访问 Linux 网络 API

linux - 如何跳过文件的第一行并读取剩余行作为 C 程序的输入?

linux - OpenGL - 主机内存中驱动程序的大小

ffmpeg - 通过 FFMPEG 监控 GPU 使用情况