在 OpenGL 中,为了实现适当的透明度效果,我应该使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
该混合功能,但使用该混合功能,alpha 参数glClearColor
变得毫无意义。当我更改 alpha 参数时,glClearColor
我仍然得到相同的效果。什么时候可以使用 alpha 参数glClearColor
?我能达到什么样的效果?
问问题
5685 次
2 回答
11
glClearColor
将 RGBA 帧缓冲区的颜色(和 alpha 值)设置为glClear(GL_COLOR_BUFFER_BIT)
. 帧缓冲区 alpha 值将与GL_DST_ALPHA
或GL_ONE_MINUS_DST_ALPHA
混合函数一起考虑。
但是,您的常规屏幕窗口帧缓冲区通常不带有 alpha 值。当然也存在明显的例外,例如背景透光的透明窗口,但它们的设置有点乏味,并且仍然会接收所有鼠标事件,即使在“透明”区域上也是如此。
具有 alpha 通道的帧缓冲区主要用于渲染到纹理目标。
因此,在您的情况下,您对透明颜色没有特别的兴趣。您更有可能对glColor4f
Alpha 通道的第 4 个参数或纹理感兴趣。
于 2012-06-26T15:30:18.470 回答
0
Opacity 是 Alpha,不是透明度。 为 0 时根本看不到,为 1 时完全可以看到。如果它是 0.5f,你可以在一半功率下看到它。
于 2020-01-19T05:08:10.320 回答