我正在尝试使用以下命令渲染一些透明对象:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);然而,我没有得到我想要的结果。
我画一个完全不透明的正方形,然后画一个半透明的正方形。颜色正如我所期望的那样,然而,alpha通道并不像我想要的那样完全是白色的。
基本上我想要下面的方程式:
r = old_r*(1.0-a)+r*a;
g = old_g*(1.0-a)+g*a;
b = old_b*(1.0-a)+b*a;
a = old_a + a;这可以使用glBlendFunc实现吗?或者我必须求助于着色器和多个FBO来进行回读吗?
发布于 2011-05-03 01:51:52
您基本上需要为颜色和alpha使用单独的混合函数,这是通过使用glBlendFuncSeparate实现的
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);你想要的混合功能。
发布于 2011-05-03 01:26:39
只需绘制不透明的正方形,然后检查alpha通道。如果在渲染已知不透明的正方形时,它没有显示为全白,则可能是其他设置有问题。
https://stackoverflow.com/questions/5860025
复制相似问题