OpenGLとアルファマスク
質問
私は白(1)=可視および黒(0)隠さ=
にOpenGLでアルファマスクを使用しますだから私は何をすべきか(あなたが見る、私のpythonを使用しています)私はglColorMask(False, False, False, True)
を使用してフレームバッファのアルファ成分で何かを書きであるし、それはブレンドを使用して、上記のいくつかの図形を描画します。
しかし、それは動作しません。 I 0とcompletlyアルファバッファを充填した後、このように見えてはならないいくつかの幾何学的形状を描画しようとしました。しかし、それは常に現れ、アルファバッファがcompletly無視されます。
# Clear alpha buffer to 0, and clear color buffer.
# After this, the alpha buffer should probaby be filled with 0.
glClearColor(0, 0, 0, 0)
glClear(GL_COLOR_BUFFER_BIT)
# Disable blending.
glDisable(GL_BLEND)
# Disable color writing.
glColorMask(False, False, False, True)
# Set color to a white with alpha 0.
glColor4f(1, 1, 1, 0)
# Now draw a fullscreen quad.
# After this, the alpha buffer should really be filled with 0.
# Shouldn't it?
glBegin(GL_QUADS)
glVertex2f(0, 0)
glVertex2f(320, 0)
glVertex2f(320, 480)
glVertex2f(0, 480)
glEnd()
# Enable color writing.
glColorMask(True, True, True, True)
# Enable blending so that incoming fragments are multiplied
# by alpha values already in the buffer.
glEnable(GL_BLEND)
glBlendFunc(GL_DST_ALPHA, GL_ONE)
# Set color to a white with alpha 1.
glColor4f(1, 1, 1, 1)
# Now draw a triangle.
# It should not be visible because alpha in framebuffer is 0
# and 0 * 1 = 0.
glBegin(GL_TRIANGLES)
glVertex2f(20, 50)
glVertex2f(300, 50)
glVertex2f(160, 210)
glEnd()
(はい、投影行列は、右0/0から240分の320に私の画面の範囲である。ようです)
三角形が表示されないはずです、私が間違って何をした?
解決
は、作成時にアルファバッファの求めて試してみてくださいあなたのGLコンテキスト、すでにされていない場合ます。
他のヒント
使用glAlphaFunc(GL_GREATER、0.5);
所属していません StackOverflow