0

我在 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",阴影没有不再工作了。

4

1 回答 1

2

我在 opengl 中有一个奇怪的错误,我无法解释。我已经使用复制过去的教程“编程”了阴影贴图。

简而言之:你是货物崇拜阅读一些优秀的OpenGL 教程了解他们所教的内容,然后你就会取得一些进步。

我不明白 glBindTexture 是用于读取还是用于写入......这个 depthTex 确实被定义为存储阴影贴图的纹理。

这是为双方。它选择绑定到活动纹理单元的纹理。当启用纹理或从纹理单元采样的着色器绑定时,将读取绑定的纹理。调用其中一个 glTex…Image 函数将写入它。

于 2013-09-26T14:10:29.350 回答