在OpenGL中,为了达到适当的透明度效果,我应该使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
但是有了这个混合函数,glClearColor
中的alpha参数变得毫无意义。当我在glClearColor
中更改 alpha 参数时,我仍然得到相同的效果。我什么时候可以在glClearColor
中使用 alpha 参数?我能达到什么样的效果?
glClearColor
设置RGBA帧缓冲的颜色(和alpha值)将与glClear(GL_COLOR_BUFFER_BIT)
清除。帧缓冲 alpha 值将在GL_DST_ALPHA
或GL_ONE_MINUS_DST_ALPHA
混合函数中考虑在内。
但是,常规的屏幕窗口帧缓冲通常不带有 alpha 值。当然,也存在值得注意的例外,例如背景闪耀的透明窗口,但它们的设置有点乏味,并且仍然会收到所有鼠标事件,即使在"透明"区域上也是如此。
具有 Alpha 通道的帧缓冲器最受关注,它们会渲染到纹理目标。
因此,在您的情况下,透明颜色对您没有特别的兴趣。您更有可能对具有 alpha 通道的glColor4f
或纹理的第 4 个参数感兴趣。
不透明度是 Alpha,而不是透明度 这意味着当它为 0 时,您根本看不到它。当它是 1 时,您可以完全看到它。如果它是 0.5f,您可以在半功率下看到它。