2009-04-06 20 views
5

次のスニペットは、灰色の四角形を描画します。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(); 

私のアプリケーションでは、この1つの正方形の背後には色付きのキューブがあります。

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

+0

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

答えて

9

あたりの色を設定次の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(); 
2

glColor4f(float r、float g、float b、flaot alpha);
(おそらくclColor4b)
また、そのブレンドが有効になっていることを確認してください。
(あなたは非アルファafterwadsに色をリセットする必要が、古いはVertexColorを保存するためにglGet *を伴う可能性がある)

2

使用glColor4代わりglColor3の。たとえば:

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

ありがとうございました。うーん、私のために働いていないようだ、私は間違って何をすることができますか? –

2

あなたは、init関数では頂点

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(); 
関連する問題