Я думаю, что вы можете сделать это с OpenGL ES 1.1, используя мультитекстурирование и среду GL_COMBINE
.Сначала мы используем любое стандартное окружение, которое вы хотите для цветовой текстуры:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, rgbTexture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); //or maybe GL_REPLACE
Затем для альфа-текстуры, которая привязана ко второму блоку, мы просто берем цвет с предыдущего этапа (цветовой текстуры)и используйте только альфа текстуры.
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, alphaTexture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTenEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); //default
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); //or maybe GL_REPLACE
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE); //default
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); //default
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, GL_PREVIOUS); //default
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA); //default
Если я вас неправильно понял, и вы не хотите использовать мультитекстурирование (и ни один фрагментный шейдер), то вы не сможете объединить эти две текстурыво время рендеринга.Возможно, с использованием многоходовой техники, но я не уверен, что это даст вам что-нибудь в плане производительности.