glBlendFunc的几种常用情况

先Mark一下,后面有时间补上DEMO

1.画航母大灯,手电筒(效果为:透过黑色半透明层可看到下面的背景图,仅圆圈部分)

   1)先画圆圈

   2)再画背景图(大背景)

   大背景设置  glBlendFunc bf = { GL_ONE_MINUS_DST_ALPHA, GL_ZERO };

2.给蛋糕涂奶油(效果为:仅刷子部分可看到想要画上去的部分,刷子叠加可看到涂上了一片奶油)

   1)先画刷子

   2)再画蛋糕(想要涂在原来蛋糕上的图层)

   蛋糕设置  glBlendFunc bf = { GL_DST_ALPHA, GL_ZERO };


3.放大镜效果(效果为:透过放大镜可以看到较大底下的效果)

   1)首先你有一个放大镜圆圈图片

   2)然后你需要构建两个RenderTexture(大小均为放大镜圆圈大小),

        the first 用来绘制放大后的背景效果(先绘制,后缩放为1.5倍) ,此部分绘制方法为先将RenderTexture坐标转换到你绘制的位置(glTranslatef(-x, -y, 0);,x,y为放大镜圆圈世界坐标)然后叠加背景图;

        the second 用来显示到你的场景当中(此RenderTexture为圆圈和the first的差值,即放大后的效果),此部分绘制方法圆圈和first叠加(抽象出的两者坐标一定要转换到同一个坐标系当中)   second部分 两个差值设置  glBlendFunc bf = { GL_DST_ALPHA, GL_ZERO };

         show the second,good luck!

4.常用  glBlendFunc bf = { GL_ZERO, GL_ONE_MINUS_SRC_ALPHA};

 

原文地址:https://www.cnblogs.com/huazaizai/p/3498246.html