0

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

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

我认为这看起来像是以错误的顺序绘制四边形,但我已GL_DEPTH_TEST禁用,所以我不确定这是否是混合、错误顺序或完全其他原因的奇怪行为。关于可能导致这种情况的任何想法?

4

0 回答 0