Как смешать две текстуры в OpenGL ES 1

0

Поскольку текстуры ETC не поддерживают альфа-канал, я попытался объединить две текстуры ETC. Любой из вас знает, как перевести это в open gl es 1.x

varying mediump vec2 uv0;
uniform sampler2D texture;
uniform sampler2D texture_alpha;

void main()
{
    vec4 color      = texture2D(texture, uv0);
    vec4 color_a    = texture2D(texture_alpha, uv0);
    vec4 final_color = vec4(color.rgb, color_a.r);
    gl_FragColor    = final_color;
}

это фрагментарный шейдер в opengles 2.0. поскольку Open GL ES 1.x не поддерживает шейдер. я действительно нуждаюсь в вашей поддержке здесь.

Теги:
opengl-es
textures

1 ответ

0

Вы можете сделать это, создав первую текстуру без смешивания, затем включите смешение и визуализируйте вторую текстуру поверх первой. Для этого потребуется два вызова glDrawArrays() с этим между ними для включения смешивания:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnableClientState(GL_COLOR_ARRAY);
glColorPointer()
  • 0
    Хотя вам может быть лучше использовать мультитекстурирование (что должно быть в ES 1.1).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню