К сожалению, это для openGL ES на iPhone, так что никаких шейдеров, но точка взята. Моя проблема была в очень упрощенной версии вопросов, мне нужно было применить простой цвет (включая альфа) к части определенной текстуры. Как отметил Ли, смешивание текстур позволяет альфе появляться в кадровом буфере. Решением было настаивать на том, чтобы художник сделал «бит действия» текстуры белым, а затем назначил цвет вершинам, которые я рендерил. Как то так.
glTexCoordPointer( 2, GL_FLOAT, 0, sprite->GetTexBuffer() );
glVertexPointer( 3, GL_FLOAT, 0, sprite->GetVertexBuffer() );
glColorPointer( 4, GL_FLOAT, 0, sprite->GetColorBuffer() );
glDrawArrays( GL_TRIANGLES, 0, 6 ); // Draw 2 triangles
Где даже если у него есть текстура, цвет означает, что он добавляет к цвету текстуры, поэтому, когда это альфа, она остается альфа, а где она белая (как я должен был сделать), она становится цветом цветного указателя в точке.