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