Я использую glBindFragDataLocationIndexed() и записываю два цвета в шейдере фрагментов. Ниже мой код:Использование GL_SRC1_COLOR в glBlendFunc()
glBindFragDataLocationIndexed(shader_data.psId, 0, 0, "Frag_Out_Color0");
glBindFragDataLocationIndexed(shader_data.psId, 0, 1, "Frag_Out_Color1");
glActiveTexture (GL_TEXTURE0);
LoadTexture(texture1);
glBindTexture (GL_TEXTURE_2D, tex_id1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,width, height, 0, GL_RGBA,GL_UNSIGNED_BYTE, texture1_data);
glActiveTexture (GL_TEXTURE1);
LoadTexture(texture2);
glBindTexture (GL_TEXTURE_2D, tex_id2);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,width, height, 0, GL_RGBA,GL_UNSIGNED_BYTE, texture2_data);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_COLOR, GL_SRC1_COLOR);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
Фрагмент шейдера:
#version 150
in vec2 texcoord;
uniform sampler2D basetexture1;
uniform sampler2D basetexture2;
out vec4 Frag_Out_Color0;
out vec4 Frag_Out_Color1;
void main(void)
{
Frag_Out_Color0 = texture2D(basetexture1, texcoord);
Frag_Out_Color1 = texture2D(basetexture2, texcoord);
}
OGL3.3 спецификация говорит, что:
Data written to the first of these outputs becomes the first source
color input to the blender (corresponding to SRC_COLOR and SRC_ALPHA). Data
written to the second of these outputs generates the second source color input to
the blender (corresponding to SRC1_COLOR and SRC1_ALPHA).
Я прошел GL_SRC_COLOR, GL_SRC1_COLOR в качестве вклада в glBlendFunc(). Я не уверен, правильный результат или нет. Пожалуйста, найдите прилагаемые изображения. Также, если я передаю GL_ONE, GL_ONE, визуализируется только первая текстура и никаких признаков второй текстуры вообще. Как я могу проверить, что остальная часть моего кода в порядке (и смешение выполнено правильно)?
Ниже приведены текстуры 1, текстуры 2 и результат соответственно.
http://www.andersriggelsen.dk/glblendfunc.php – elect