4

在 OpenGL 中,为了实现适当的透明度效果,我应该使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)该混合功能,但使用该混合功能,alpha 参数glClearColor变得毫无意义。当我更改 alpha 参数时,glClearColor我仍然得到相同的效果。什么时候可以使用 alpha 参数glClearColor?我能达到什么样的效果?

4

2 回答 2

11

glClearColor将 RGBA 帧缓冲区的颜色(和 alpha 值)设置为glClear(GL_COLOR_BUFFER_BIT). 帧缓冲区 alpha 值将与GL_DST_ALPHAGL_ONE_MINUS_DST_ALPHA混合函数一起考虑。

但是,您的常规屏幕窗口帧缓冲区通常不带有 alpha 值。当然也存在明显的例外,例如背景透光的透明窗口,但它们的设置有点乏味,并且仍然会接收所有鼠标事件,即使在“透明”区域上也是如此。

具有 alpha 通道的帧缓冲区主要用于渲染到纹理目标。

因此,在您的情况下,您对透明颜色没有特别的兴趣。您更有可能对glColor4fAlpha 通道的第 4 个参数或纹理感兴趣。

于 2012-06-26T15:30:18.470 回答
0

Opacity 是 Alpha,不是透明度。 为 0 时根本看不到,为 1 时完全可以看到。如果它是 0.5f,你可以在一半功率下看到它。

于 2020-01-19T05:08:10.320 回答