2009-04-06 33 views
5

Đoạn mã sau vẽ một hình vuông màu xám.Làm cách nào để đặt độ mờ của một đỉnh trong OpenGL?

glColor3b(50, 50, 50); 

glBegin(GL_QUADS); 
glVertex3f(-1.0, +1.0, 0.0); // top left 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 

Trong ứng dụng của tôi, phía sau hình vuông đơn này có một khối màu.

Tôi nên sử dụng chức năng nào để làm hình vuông (và chỉ hình vuông này) mờ đục?

+0

related http://stackoverflow.com/questions/1617370/opengl-alpha-transparency –

Trả lời

9

Trong hàm init, sử dụng hai dòng lệnh sau:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

Và trong làm cho chức năng của bạn, đảm bảo rằng glColor4f là được sử dụng thay vì glColor3f và đặt đối số thứ tư theo mức độ mờ cần thiết.

glColor4f(1.0, 1.0, 1.0, 0.5); 

glBegin(GL_QUADS); 
glVertex3f(-1.0, +1.0, 0.0); // top left 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 
2

glColor4f (float r, float g, float b, flaot alpha);
(trong trường hợp của bạn có thể là clColor4b)
cũng đảm bảo rằng tính năng trộn được bật.
(bạn phải thiết lập lại màu sắc để afterwads phi-alpha, mà có thể liên quan đến một glGet * để lưu vertexcolor cũ)

2

Sử dụng glColor4 thay vì glColor3. Ví dụ:

glBlendFunc(GL_SRC_ALPHA,GL_ONE); 
glColor4f(1.0f,1.0f,1.0f,0.5f); 
+0

Cảm ơn. Hmm, dường như không làm việc cho tôi, tôi có thể làm gì sai? –

2

Bạn có thể thiết lập màu sắc cho mỗi đỉnh

glBegin(GL_QUADS); 
glColor4f(1.0, 0.0, 0.0, 0.5); // red, 50% alpha 
glVertex3f(-1.0, +1.0, 0.0); // top left 
// Make sure to set the color back since the color state persists 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 
Các vấn đề liên quan