ron*_*nag 1 c++ opengl transparency
我正在尝试使用以下方法渲染一些透明对象:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到我想要的结果.
我画了一个完全不透明的正方形,然后画了一个半透明的正方形.颜色就像我期望的那样,然而,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;
Run Code Online (Sandbox Code Playgroud)
这可能是使用glBlendFunc实现的,还是我必须求助于着色器和多个FBO进行回读?
您基本上需要单独的颜色和alpha混合函数,这可以通过使用glBlendFuncSeparate来实现:
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);
Run Code Online (Sandbox Code Playgroud)
你想要的混合功能吗?