То, что я пытаюсь сделать, это вывести маскированную текстуру на iPhone с помощью OpenGL ES 1.1. Комбинированное поведение по умолчанию работает мне на пользу, пока я действительно не хочу изменять АЛЬФА конечного результата!
Плавающая переменная 'a' (Alpha) здесь не действует: (Все остальное выводит нормально, оно маскируется и хорошо рисует, за исключением того, что альфа неконтролируемо 1,0 непрозрачна)
/* Setup First Texture (RGBA Texture) */
glClientActiveTexture(GL_TEXTURE0);
glActiveTexture(GL_TEXTURE0);
glColor4f(r, g, b, a);
glBindTexture(GL_TEXTURE_2D, t->tx);
glVertexPointer(2, GL_FLOAT, 0, afPos);
glTexCoordPointer(2, GL_FLOAT, 0, afUV);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
/* Setup Mask (RGBA Texture, White to Transparent Gradient) */
glClientActiveTexture(GL_TEXTURE1);
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glColor4f(r, g, b, a);
glBindTexture(GL_TEXTURE_2D, tMask->tx);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, afPos);
glTexCoordPointer(2, GL_FLOAT, 0, afUV);
/* Make the Mask Repeat */
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
/* Draw Both */
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
[править] Весь цвет вообще не имеет никакого эффекта, как будто он установлен на (1, 1, 1, 1), так что это не просто альфа. [/ Edit]
Думайте об этом, как будто у вас есть слой с маской в фотошопе, который кажется правильным, теперь все, что я хочу сделать, это установить непрозрачность этих слоев. Я ценю вашу помощь!