繁体   English   中英

可以将GL_FLOAT纹理作为颜色附件分配给FBO吗?

[英]Can a GL_FLOAT texture be assigned to a FBO as a COLOR attachment?

为了在屏幕外渲染纹理,我在附件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。

我知道这个问题是可以自行回答的,但是需要对此进行讨论:

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

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

纹理实际格式是第三个参数; 定义纹理实际包含的内容。 最后三个参数定义您如何尝试将数据上传到纹理 ; 如果指针为NULL(并且没有绑定PBO),则参数无意义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM