1
これは私が3Dオブジェクトを描画した後、オルト投影をオンにする方法である:オルトでアルファブレンディングが動作しないのはなぜですか?
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,Screen_Width,Screen_Height,0,0,1);
そして、これは私がブレンドをオンにし、3Dオブジェクトを描画した後、オルトでテクスチャを描画する方法である:
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1,1,1,1);
glBindTexture(GL_TEXTURE_2D,Texture1);
glBegin(GL_QUADS);
//draw 1st quad
glEnd();
glBindTexture(GL_TEXTURE_2D,Texture2);
glBegin(GL_QUADS);
//draw 2nd quad
glEnd();
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
Quad1はAですQuad2よりも大きく、Quad2の一部をカバーしています。どちらのテクスチャもRGBAとしてアルファチャンネルを持っています。
問題は、Quad1 & Quad2は、アルファで3Dオブジェクトをオーバーレイしますが、Quad1のアルファはQuad2の上にあるときには機能しません。それは、RGBのようにQuad2の上に描画します。
どうすればこの問題を解決できますか?
はそんなにありがとう、私はGL_DEPTH_TESTを無効にしませんでした:) – jondinham