如何在openGL中绘制透明多边形

Hit*_*man 6 opengl

我需要你的帮助.我知道openGL中有alpha,它帮助我在透明模式下绘制多边形,但我不知道如何做到这一点,应该允许opengGL绘制多边形.

并感谢您的帮助.

Mat*_*gro 15

这很简单:

glEnable(GL_BLEND); //Enable blending.
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //Set blending function.
Run Code Online (Sandbox Code Playgroud)

这是基本的,混合功能是基本的,应该没问题,但还有其他功能.

然后,您需要确保窗口/帧缓冲区包含Alpha通道,并且您绘制的多边形也包含Alpha信息.


小智 7

正如Matias所说的那样,但你也应该记住,为了让"透明度"按照预期工作,必须首先绘制场景中的所有非透明图元,并且必须以正确的顺序绘制透明图元. ,从Z缓冲区的后面朝向前方.

这样做的原因是OpenGL并不真正支持透明度,它通过alpha混合来模拟它,因此如果在渲染之后在"透明"基元后面绘制新对象,则新对象将不可见通过它.