OpenGL裁剪、混合的理解

2020-07-14  本文已影响0人  CrazySnow

裁剪

glEnable(GL_SCISSOR_TEST);

关闭裁剪测试

 glDisable(GL_SCISSOR_TEST);

指定裁剪窗⼝
x,y:指定裁剪框左下角位置; width , height:指定裁剪尺寸

void glScissor(Glint x,Glint y,GLSize width,GLSize height);

混合

根据使用场景的不同,混合有两种方式:
1.开关混合:单纯的两个图层混合

//开启混合
glEnable(GL_BLEND);
//关闭混合
glDisable(GL_BLEND);

2.开关混合+混合方程式:(滤镜效果)带有半透明的图层混合,或者是不存在图层单纯的两种颜色混合

设置混合因子

//S:源混合因⼦子 D:⽬目标混合因⼦子
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
混合方程式.png OpenGL混合因子.png

总结:
在混合方程中,源颜色(最上面的图层)的alpha值越高,添加的新颜色成分就越高,旧颜色值就保留的越少
混合函数经常用于实现在其他一些不透明的物体前面绘制一个透明物体的效果。
完整demo

上一篇 下一篇

猜你喜欢

热点阅读