OpenGL alpha混合有时会创建黑色四边形

时间:2012-08-18 03:09:13

标签: c++ opengl alphablending

我试图通过在场景上放置半透明的黑色四边形来为2D OpenGL场景制作简单的阴影,但是在某些地方而不是使场景变暗它会使场景完全变黑。我使用glBlendFunc(GL_DST_COLOR, GL_SRC_ALPHA)作为着色器四边形,glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)用于其他所有绘图。

这通常起作用,使半透明四边形下的区域变暗,但在某些情况下它表现得很奇怪。当半透明四边形下方的区域仅在其后面绘制一个四边形时,它表现正常。当在后四边形上绘制另一个四边形(或多个四边形)时,它有时会表现正常,有时会使四边形完全变黑,或者有时会使最后绘制的四边形下面的所有内容变黑(例如,如果我有一个带有红色纹理的四边形)在它上面的蓝点,下方的红色将被涂黑,但蓝点将保持不变。)

我认为这看起来像四边形画的顺序错误,但是GL_DEPTH_TEST被禁用了,所以我不确定这是混合,错误排序还是完全不同的奇怪行为。关于可能导致这种情况的任何想法?

0 个答案:

没有答案