渲染到无符号整数texture2D

时间:2017-12-11 09:06:19

标签: opengl glsl

我正在尝试渲染到(RGBA32UI)无符号整数texture2D,然后使用glReadPixels读取像素数据。但它不起作用

#version 450 core


 out uvec3 output_color;

void main()
{   
   output_color = uvec3(1, 2, 3);
}

Shader(GLSL)

{{1}}

有没有人遇到过这个问题?求你帮帮我。

1 个答案:

答案 0 :(得分:2)

命令

glBindBuffer(GL_READ_BUFFER, FramebufferName);

错了。 glBindBuffer没有目标GL_READ_BUFFER,因此会导致GL_INVALID_ENUM错误。 (您应该添加一些错误检查,最好通过debug output(如果可用)。)您永远不能将FBO绑定到glBindBuffer。 FBO只能与glBindFramebuffer绑定。你真正想做的是:

glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferName);
glReadBuffer(GL_COLOR_ATTACHMENT0);

另请注意,glBindFramebuffer(GL_FRAMEBUFFER, ...);只是一次绑定GL_DRAW_FRAMEBUFFERGL_READ_FRAMEBUFFER的快捷方式。