2012-04-16 37 views
7

Tôi đang sử dụng glColor4f(). Đáng ngạc nhiên, thay đổi alpha, tức là đối số thứ tư không gây ra bất kỳ thay đổi nào về tính minh bạch. Phân đoạn mã là:glColor4f() - ảnh hưởng của giá trị alpha

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); 

Bất kỳ con trỏ nào đến nơi tôi có thể gặp sự cố?

Trả lời

13

Bạn cần phải bật phối màu nếu bạn muốn sử dụng tính minh bạch:

glEnable(GL_BLEND);

Xem thêm glBlendFunc để thiết lập chức năng hòa trộn.

+0

Cảm ơn con trỏ. – Iceman

+0

Câu trả lời hay, @Tim. Nó được sử dụng khá tốt trên wiki OpenGL, nhưng ở đây có một hàm pha trộn mẫu, chỉ trong trường hợp: 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);' – Fernando

Các vấn đề liên quan