以下は、ブレンドがどのように機能するかについてのデモを実現するために使用するコードの一部です。
glDisable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glBegin(GL_QUADS);
glColor4f(1.0f, 0.0f, 0.0f, 0.5f);
glVertex3i(2, 0, 0);
glVertex3i(2, 6, 0);
glVertex3i(6, 6, 0);
glVertex3i(6, 0, 0);
glEnd();
glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA);
glBegin(GL_QUADS);
glColor4f(0.0, 1.0, 0.0, 0.5f);
glVertex3i(3, 2, -1);
glVertex3i(3, 8, -1);
glVertex3i(8, 8, -1);
glVertex3i(8, 2, -1);
glEnd();
問題は、ラップトップで必要なものを示しています。つまり、2 つの四角形の交点がブレンドされ、黒い背景に残された緑の四角形の領域も、アルファが 0.0 の背景とブレンドされます。しかし、別のPCでは、赤いクワッドしか表示されません...
ラップトップの OpenGL は 2.0 で、PC の OpenGL は 4.0 以上です。問題が OpenGL のエディションであるかどうかを知りたいです。
ところで: 半透明のオブジェクトと不透明なオブジェクトを描画するときに従うべき順序はわかっています。このデモは、従わないとどれだけのトラブルが発生するかを示すためだけに使用しています...