我想在opengl es 3.0中实现MRT。因此创建了一个带有纹理的帧缓冲区作为 GL_RGBA32UI 类型的 GL_COLOR_ATTACHMENT0 附件。在该帧缓冲区上渲染 GL_RGBA32UI 的纹理图像。然后将帧缓冲区数据作为纹理读取,并将其作为默认缓冲区中的纹理应用。(基本上使用INTEGER纹理渲染到纹理)
我正在尝试为我的自定义 FBO 和默认的 FBO 使用相同的片段着色器。
precision highp float;
uniform highp usampler3D stexture;
in vec4 out_TexCoord;
uniform highp uint range;
layout(location = 0) out uvec4 uex_colour;
layout(location = 1) out vec4 ex_colour;
void main(void)
{
uex_colour = uvec4(texture(stexture, out_TexCoord.xyz));
ex_colour = vec4(texture(stexture, out_TexCoord.xyz))/(range);
ex_colour = vec4(vec3(ex_colour.xyz), 1.0);
}
想要使用 uex_color 渲染到自定义帧缓冲区和 ex_color 渲染到默认帧缓冲区。
尝试对我的 FBO 使用 glDrawBuffer(1, {GL_COLOR_ATTACHMENT0 }),但无法了解如何将 ex_colour 用于默认帧缓冲区。