为了账号安全,请及时绑定邮箱和手机立即绑定

求助关于glBlendFunc();的使用方法?

求助关于glBlendFunc();的使用方法?

C PHP
侃侃尔雅 2022-03-25 15:15:16
glBlendFunc();的使用方法以及要用到的各种参数,和参数的意义.哪位大虾有这些资料的请告诉我.我英语水平很烂,看不懂.有没有详细的说明?
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

我个人理解:
两个参数的取值都可以是如下常量之一:
GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, and GL_SRC_ALPHA_SATURATE
比如GL_ZERO表示alpha取值为0,GL_ONE表示1,GL_DST_COLOR表示取目标区域的颜色值,GL_SRC_ALPHA表示取源区域的alpha值等等。例如:

glBlendFunc(GL_SRC_ALPHA, GL_ONE);
表示把渲染的图像叠加到目标区域,也就是说源的每一个像素的alpha都等于自己的alpha,目标的每一个像素的alpha等于1。这样叠加次数越多,叠加的图元的alpha越高,得到的结果就越亮。因此这种融合用于表达光亮效果。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
表示把渲染的图像融合到目标区域。也就是说源的每一个像素的alpha都等于自己的alpha,目标的每一个像素的alpha等于1减去该位置源像素的alpha。 因此不论叠加多少次,亮度是不变的。

如此等等。自己试一试才会明白。

这个函数是制作很多特技效果的核心,变幻无穷,我这里说的只是皮毛,要完整地理解就必须看官方文档(MSDN就是一个很全面的文档),英语不好也要硬看,其实谁刚开始看的时候都会头疼,看多了英语自然就练出来了...



查看完整回答
反对 回复 2022-03-28
?
慕森卡

TA贡献1806条经验 获得超8个赞

  1. glBlendFunc 定义像素算法。

  2. 在 RGB 模式下可以使用混合使用帧缓冲区 (目标值) 中已有的 RGBA 值传入的 (源) RGBA 值的函数绘制像素为单位)。 默认情况下,混合处于禁用状态。 启用和禁用混合使用 glEnable glDisable GL_BLEND 参数。

  3. 当启用,glBlendFunc 定义混合的操作。 sfactor 参数指定的九个方法,用于扩展源颜色分量。 dfactor 参数指定的八个方法,用于扩展目标颜色分量。 十一个可能的方法是在下表中所述。 每个方法定义四个规模因素 — — 为红色、 绿色、 蓝色和阿尔法各一个。

  4. 在表中和随后方程中,在源和目标颜色组件被称为 (R s ,G s 、 B s , s ) 和 (R d ,G d 、 B d , d )。 他们被理解为是具有零之间的整数值和 (k R 、 k G 、 k R 、 k A ),其中

kR = 2 m R-1

kG = 2 m G-1

kB = 2 m B-1

kA = 2 m A-1

和 (m R 、 m G 、 m B 、 m A ) 是红色绿色、 蓝白 alpha bitplanes 数。



查看完整回答
反对 回复 2022-03-28
  • 2 回答
  • 0 关注
  • 261 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号