2011-07-27 59 views
0

对于屏幕外呈现到纹理,我在附接安装GL_COLOR_ATTACHMENT0通过可以将GL_FLOAT纹理作为COLOR附件分配给FBO吗?

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。

回答

3

我知道这个问题是自我回答,但讨论必须有这个问题:

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,width,height,0,GL_RGBA,GL_FLOAT,NULL); 

那请问创建浮点纹理。它创建一个包含标准化,无符号整数的纹理。

actual format of a texture是第三个参数;它定义了纹理实际包含的内容。最后三个参数定义了你如何尝试upload data to the texture;如果指针为NULL(并且没有绑定PBO),则参数意味着没有任何内容

+0

哦,那时我弄错了。非常感谢你的回答,这可能解释为什么我的阴影映射不起作用:) – Tuxer

相关问题