6

次のスニペットは灰色の正方形を描画します。

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

私のアプリケーションでは、この 1 つの正方形の背後に色付きの立方体が存在します。

正方形 (およびこの正方形のみ) を不透明にするには、どの関数を使用すればよいですか?

4

4 に答える 4

14

init 関数では、次の 2 行を使用します。

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();
于 2009-04-06T15:10:54.557 に答える
2

頂点ごとに色を設定できます

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();
于 2009-04-06T14:46:14.787 に答える
2

glColor4f(フロート r、フロート g、フロート b、フラット アルファ);
(あなたの場合はおそらくclColor4b)
また、ブレンドが有効になっていることを確認してください。
(色をアルファ以外のアフターワッドにリセットする必要があります。これには、古い頂点色を保存するために glGet* が必要になる場合があります)

于 2009-04-06T14:31:08.240 に答える
1

glColor4の代わりに使用してくださいglColor3。例えば:

glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glColor4f(1.0f,1.0f,1.0f,0.5f);
于 2009-04-06T14:32:45.290 に答える