杨家坪网站建设,福建省建设厅网站林瑞良,黑龙江建设网监理证书,crm系统客户管理系统QT之OpenGL混合1. 概述2. 实现2.1 丢弃片段2.1.1 Demo2.2 混合2.2.1 相关函数2.2.2 排序问题2.2.3 Demo1. 概述
OpenGL中#xff0c;混合(Blending)通常是实现物体透明度(Transparency)的一种技术。
2. 实现
2.1 丢弃片段
在某些情况下#xff0c;有些片段是只需要设置显…
QT之OpenGL混合1. 概述2. 实现2.1 丢弃片段2.1.1 Demo2.2 混合2.2.1 相关函数2.2.2 排序问题2.2.3 Demo1. 概述
OpenGL中混合(Blending)通常是实现物体透明度(Transparency)的一种技术。
2. 实现
2.1 丢弃片段
在某些情况下有些片段是只需要设置显示或者不显示而不需要考虑其透明的情况。而此时就需要对不显示的片段进行丢弃(Discard)操作。此时的片段丢弃是根据alpha通道的值判断的。
2.1.1 Demo
Demo源码
2.2 混合
混合(Blending)相对于丢弃(Discard)来说则是处于一种中间的状态即所有的片段都要绘制但是各片段存在叠加的状态。
2.2.1 相关函数 启用混合模式 glEnable(GL_BLEND);告诉OpenGL该如何混合 /*
sfactor : 源因子
dfactor : 目标因子
glBlendColor()可以用来设置常量颜色
*/
glBlendFunc(GLenum sfactor, GLenum dfactor)
/*
此函数则可以为RGB和alpha通道分别设置不同的选项
*/
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);/*
可以影响混合方程的计算方式一般是默认的设置
*/
glBlendEquation(GLenum mode)2.2.2 排序问题
在混合绘制的时候通常有遵循以下原则
先绘制所有不透明的物体对所有透明的物体排序按顺序绘制所有透明的物体
否则容易出现遮挡情况如下所示 排序后的效果如下
2.2.3 Demo
混合Demo源码