2012-04-16 2 views
7

Я использую glColor4f(). Удивительно, но изменение альфа, т. Е. Четвертого аргумента, не приводит к изменению прозрачности. Код сегмента:glColor4f() - эффект значения альфа

const GLfloat squareVertices[] = { 
0.5, 0.5, 0.0, 
-0.5, 0.5, 0.0, 
0.5, -0.5, 0.0, 
-0.5, -0.5, 0.0}; 

glEnableClientState (GL_VERTEX_ARRAY); 
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
glColor4f (1.0, 0.0, 0.0, 0.5); 
glLoadIdentity();  
glTranslatef(0, 0, -5); 
glVertexPointer(3, GL_FLOAT, 0, squareVertices); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

Любые указания на то, где я мог бы пойти не так?

ответ

13

Вам необходимо включить смешивание, если вы хотите использовать прозрачность:

glEnable(GL_BLEND);

См. Также glBlendFunc для настройки функции смешивания.

+0

Спасибо за указатель. – Iceman

+0

Хороший ответ, @ Тим. Это использование довольно хорошо документировано в вики OpenGL, но здесь идет примерная функция смешивания, на всякий случай: 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);' – Fernando

Смежные вопросы