对于纹理的屏幕外渲染,我在附件 GL_COLOR_ATTACHMENT0 处附加了一个由定义的纹理
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,宽度,高度,0,GL_RGBA,GL_FLOAT,NULL);
然后我使用输出 vec4 的片段着色器渲染到 FBO,所以通常情况下应该没问题。为了检查我是否正确显示纹理,我使用了函数
glTexSubImage2D()
在纹理中间添加一些灰色像素。纹理正确显示(我可以在正确的位置完美地看到这些像素),但纹理的其余部分只是嘈杂的伪影(当它不是黑色时)。
这是因为我将 GL_FLOAT 用于 GL_RGBA 纹理吗?如果是,我如何在 GLSL 中将 uvec4 转换为 vec4?我的主着色器的输出是 vec4,我不知道如何将 usampler2D 纹理的 uvec4 输出转换为我的最终 vec4。
感谢您提供的任何答案:)
编辑:我找到了解决方案:我没有清除我的 2 个渲染之间的 GL_COLOR_BUFFER_BIT。