【发布时间】:2010-05-12 11:33:48
【问题描述】:
是否可以使用 OpenGL 对每个组件使用一个 Alpha 通道(一个用于红色,一个用于绿色,一个用于蓝色)进行混合?如果没有,有哪些可能的解决方法?
【问题讨论】:
标签: opengl graphics alphablending
是否可以使用 OpenGL 对每个组件使用一个 Alpha 通道(一个用于红色,一个用于绿色,一个用于蓝色)进行混合?如果没有,有哪些可能的解决方法?
【问题讨论】:
标签: opengl graphics alphablending
这不是直接支持的。不过,您自己也很容易实现:
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR) 渲染您的三角形(或其他)
glBlendFunc(GL_ONE, GL_ONE) 渲染您的三角形
【讨论】:
您可以使用像素着色器来执行此操作,但您需要找到一种方法来存储/访问每个组件的 alpha 值。您可以将它们存储在纹理中,并将正常颜色分量视为相应颜色的 alpha 值。
你想达到什么效果/输出?
【讨论】:
OpenGL 无法实现您所描述的内容。
也就是说,考虑到您是 OpenGL 的新手,也许您所描述的并不完全是您所追求的?
混合是在您确定当前片段(通常来自三角形)应该具有的颜色后发生的步骤。该颜色需要与帧缓冲区中的先前颜色合并。你确定这就是你所追求的吗?
【讨论】:
您可能正在寻找:GL_ARB_blend_func_extended
【讨论】: