我在 opengl 中有一个奇怪的错误,我无法解释。我已经使用教程的复制粘贴“编程”了阴影贴图。我想显示阴影贴图,所以我写了一个小程序来显示它。它不起作用(我只得到一个白色方块)。最后,通过大量尝试,我在场景的主要渲染中得到了几乎正确的阴影。但是当我取消注释显示阴影贴图的例程时,阴影不再呈现。(在主渲染之前)
我想这与glBindTexture(GL_TEXTURE_2D, depthTex)
(存储在影子缓冲区中)有关。如果不要求参考 thisdepthTex
来显示阴影贴图,那么阴影就会以某种方式构建,但是当要求显示 this 时depthTex
,计算出的阴影是无意义的。
我想知道是否曾经要求glBindTexture(GL_TEXTURE_2D, depthTex)
显示 shadowMap,depthTex
不再能够链接到阴影着色器的计算。
我不明白glBindTexture
是为了阅读还是为了写作……这depthTex
确实被定义为存储阴影贴图的纹理。
总结:两段代码相互干扰,使得纹理的渲染看起来比简单地给出常规的opengl命令来显示纹理更复杂。就好像glBindTexture(GL_TEXTURE_2D, depthTex)
只能调用一次一样。
如果我在阴影贴图例程的显示中要求显示程序的另一个纹理(例如“地板”),那么阴影在主渲染场景上是可以的,但是当我要求显示时"depthTex"
,阴影没有不再工作了。