猿问

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

glBlendFunc();的使用方法
以及要用到的各种参数,和参数的意义.
哪位大虾有这些资料的请告诉我.
我英语水平很烂,看不懂.
有没有详细的说明?

侃侃尔雅
浏览 262回答 2
2回答

交互式爱情

我个人理解:两个参数的取值都可以是如下常量之一: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就是一个很全面的文档),英语不好也要硬看,其实谁刚开始看的时候都会头疼,看多了英语自然就练出来了...

慕森卡

glBlendFunc 定义像素算法。在 RGB 模式下可以使用混合使用帧缓冲区 (目标值) 中已有的 RGBA 值传入的 (源) RGBA 值的函数绘制像素为单位)。 默认情况下,混合处于禁用状态。 启用和禁用混合使用 glEnable glDisable GL_BLEND 参数。当启用,glBlendFunc 定义混合的操作。 sfactor 参数指定的九个方法,用于扩展源颜色分量。 dfactor 参数指定的八个方法,用于扩展目标颜色分量。 十一个可能的方法是在下表中所述。 每个方法定义四个规模因素 — — 为红色、 绿色、 蓝色和阿尔法各一个。在表中和随后方程中,在源和目标颜色组件被称为 (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-1kG = 2 m G-1kB = 2 m B-1kA = 2 m A-1和 (m R 、 m G 、 m B 、 m A ) 是红色绿色、 蓝白 alpha bitplanes 数。
随时随地看视频慕课网APP
我要回答