【发布时间】:2011-10-14 12:07:58
【问题描述】:
对于纹理的屏幕外渲染,我在附件 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。
【问题讨论】: