我正在尝试使用以下方法渲染一些透明对象:
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进行回读?
最佳答案
基本上,您需要单独的颜色和Alpha混合功能,这可以通过使用glBlendFuncSeparate实现:
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);
是否要混合功能?
关于c++ - glBlendFunc和Alpha channel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5860025/