OpenGL 着色故障 glsl

OpenGL shading glitch glsl

我的问题是我的 OpenGL 场景中对象的法线显然莫名其妙地翻转了。这里有一些图片可以帮助我解释。

第一张截图:

第二张截图:

是我的代码有问题(这不应该是因为我没有更改那里的任何东西),还是仅仅是显卡故障?如果问题出在我的显卡上,该如何解决?

旁注,在我升级显卡驱动程序之前它工作正常

您的问题是您在没有使用深度测试的情况下绘制立方体的两侧(内部和外部)。有两种方法可以解决这个问题。通常,您将启用 both,因为它们解决不同的问题,但在这种特殊情况下,这两种技术都可以解决您的问题。

  1. 启用深度测试:glEnable(GL_DEPTH_TEST)。这将使前面的立方体部分绘制在后面的部分上,但反之亦然。

  2. 启用背面剔除:glEnable(GL_CULL_FACE)。这将使绘制立方体的外部而不是内部。请注意,您必须确保所有三角形都朝向正确的方向才能使其正常工作。另请注意,这只是一个完整的解决方案,因为您的模型是凸的。