[英]How do I set the opacity of a vertex in 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();
在我的應用程序中,這個單個方塊后面有一個彩色立方體。
我應該使用什么函數來使正方形(並且只有這個正方形)不透明?
在init函數中,使用以下兩行:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
在渲染函數中,確保使用glColor4f
而不是glColor3f
,並將第4個參數設置為所需的不透明度級別。
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();
glColor4f(float r,float g,float b,flaot alpha);
(在你的情況下可能是clColor4b)
還要確保啟用了混合。
(你必須將顏色重置為非alpha后加工,這可能涉及glGet *來保存舊的頂點顏色)
使用glColor4
而不是glColor3
。 例如:
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glColor4f(1.0f,1.0f,1.0f,0.5f);
您可以設置每個頂點的顏色
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.