rp做网站原型要缩小尺寸吗中国企业100强
混合
文章目录
- 混合
 - 混合公式
 - glBlendFunc(混合函数)
 - glBlendFuncSeparate
 - 渲染半透明纹理
 
- 参考链接
 
混合(Blending)通常是实现物体透明度(Transparency)的一种技术
 简而言之:混合就是如何将输出颜色和目标缓冲区颜色结合起来。
混合公式
C_final = f_source * C_source op f_destination * C_destination。
 
- 输入片段的颜色和Alpha通常称为源颜色分量和源Alpha,目标像素的颜色和Alpha则称为目标颜色分量和目标Alpha。
 
- f_source是输入片段(源)的混合因子;
 - C_source是输入片段(源)的颜色;
 - C_source是输入片段(源)的颜色;
 - C_destination是目标像素(目标)的颜色;
 - op是混合运算符,可以是GL_FUNC_ADD(前后两项相加),GL_FUNC_SUBTRACT(前后两项相减),GL_FUNC_REVERSE_SUBTRACT(前后两项相减,但顺序相反)。
 
glBlendFunc(混合函数)
中文版参数显示不全,建议看英文版或者docs.gl
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR)
glBlendEquation(GL_FUNC_ADD) //默认相加
 
- 源颜色 W(0.3,0.4,0.7,0.5)
 - 目标颜色: X(0.8,0.2,0.3,0.1)
 - GL_SRC_ALPHA:取
 - 最终结果为 (0.5,0.5,0.5,0.5) * W(0.3,0.4,0.7,0.5) +
(1-0.8,1-0.2,1-0.3,1-0.1) * X(0.8,0.2,0.3,0.1) 

glBlendFuncSeparate
就是通过四个分量设置
void glBlendFuncSeparate(	
GLenum srcRGB,
GLenum dstRGB,
GLenum srcAlpha,
GLenum dstAlpha); 
渲染半透明纹理
- 先渲染不透明物体
 - 再按顺序渲染半透明物体
 
如何排序?
 按照相机位置到物体位置的距离大小来排序。
关于是否使用深度写入的问题?
- 如果透明物体不交叉重叠,可以不用深度写入
 
参考链接
可视化混合函数
docs.gl
Blend
