Я хочу реализовать MRT в opengl es 3.0. Таким образом создал фреймбуфер с текстурой в виде вложения GL_COLOR_ATTACHMENT0 типа GL_RGBA32UI. Рендеринг текстурированного изображения GL_RGBA32UI в этом фреймбуфере. Затем чтение данных фреймбуфера в виде текстуры и применение их в качестве текстуры в буфере по умолчанию. (В основном визуализируйте текстуру, используя текстуру INTEGER)
Я пытаюсь использовать один и тот же фрагментный шейдер как для моей настройки 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 для рендеринга в фреймбуфер по умолчанию.
Пытался использовать glDrawBuffer(1, {GL_COLOR_ATTACHMENT0 }) для моего FBO, но не смог понять, как использовать ex_color для кадрового буфера по умолчанию.