我正在尝试渲染到(RGBA32UI)无符号整数texture2D,然后使用glReadPixels读取像素数据。但它不起作用
#version 450 core
out uvec3 output_color;
void main()
{
output_color = uvec3(1, 2, 3);
}
Shader(GLSL)
{{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_FRAMEBUFFER
和GL_READ_FRAMEBUFFER
的快捷方式。