使用OpenGL的每个组件alpha通道?

时间:2010-05-12 11:33:49

标签: opengl graphics alphablending

是否可以使用OpenGL对每个组件(一个用于红色,一个用于绿色,一个用于蓝色)执行一个Alpha通道的混合?如果没有,有哪些可行的解决方法?

4 个答案:

答案 0 :(得分:2)

这不是直接支持的东西。尽管如此,这很容易实现:

  • 使用3通道“alpha”纹理和glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR)
  • 渲染三角形(或其他)
  • 启用多重纹理并设置“alpha”纹理以调整rgb纹理
  • 使用glBlendFunc(GL_ONE, GL_ONE)
  • 渲染三角形

答案 1 :(得分:1)

您可以使用像素着色器执行此操作,但您需要找到存储/访问每个组件Alpha值的方法。您可以将它们存储在纹理中,并将正常颜色分量视为相应颜色的Alpha值。

您想要达到什么效果/输出?

答案 2 :(得分:0)

使用OpenGL无法实现您所描述的内容。

那就是说,考虑到你是OpenGL的新手,也许你所描述的并不完全是你所追求的?

混合是一旦您确定当前片段(通常来自三角形)应该具有什么颜色时发生的步骤。该颜色需要与帧缓冲区中的前一种颜色合并。你确定那是你想要的吗?

答案 3 :(得分:0)

您可能正在寻找:GL_ARB_blend_func_extended