簡體   English   中英

如何在OpenGL中設置頂點的不透明度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM