glBlendFunc,即定义像素算法。
像素可以通过函数操作后被绘出,该函数的功能是将引入的值与颜色缓冲中已有的值混合。使用glEnable方法与glDisable方法以GL_BLEND为参数,决定是否开启混合功能,该功能初始为关闭的。
当混合功能开启时glBlendFunc定义混合功能的操作。sfactor指明十一中方法中的哪一种用来衡量源颜色要 素,dfactor指明十种方法中的哪一种用来衡量目的颜色要素。十一种可能的方法将在下面进行介绍。每一种方法定义了四个衡量元素,分别是红、绿、蓝和 alpha。

简介

编辑

glBlendFunc 定义像素算法。

语法

编辑

void WINAPI glBlendFunc(GLenum sfactor,GLenum dfactor);

参数

编辑

sfactor
指定红绿蓝和 alpha 源混合因子如何计算。初始值为GL_ONE。 接受了九个符号常量: GL_ONE_MINUS_DST_ALPHA,GL_ZERO GL_ONE,GL_DST_COLOR GL_ONE_MINUS_DST_COLOR,GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA 和 GL_SRC_ALPHA_SATURATE。
dfactor
指定红绿蓝和 alpha 目标混合因子如何计算。初始值为GL_ZERO。 接受了八个符号常量: GL_ZERO GL_ONE,GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR,GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA,和 GL_ONE_MINUS_DST_ALPHA。
返回值
返回以下错误代码和他们的条件。
返回代码
说明
GL_INVALID_ENUM
sfactor 或 dfactor 不被接受的值。
GL_INVALID_OPERATION
调用 glBegin 和 glEnd 的相应调用之间被调用该函数。

备注

编辑

在 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-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 数。
源和目标规模因素被称为 (s R 、 s G 、 s B 、 s A ) 和 (d R 、 d G 、 d B 、 d A )。 表示的表中所述的规模因素 ( f R f、 G 、 f B 、 f A ),表示源或目标的因素。 所有规模因素都有范围 [0]。
参数
(f R f、 G 、 f B 、 f A )
GL_ZERO
(0,0,0,0)
GL_ONE
(1,1,1,1)
GL_SRC_COLOR
(R s / s k R 、 G / k G 、 B s / k B、 A s / k A)
GL_ONE_MINUS_SRC_COLOR
(1,1,1,1)-(R s / s k R 、 G / k G 、 B s / k B、 A s / k A)
GL_DST_COLOR
(R d / d k R 、 G / k G 、 B d / k B、 A d / k A)
GL_ONE_MINUS_DST_COLOR
(1,1,1,1)-(R d / d k R 、 G / k G 、 B d / k B、 A d / k A)
GL_SRC_ALPHA
(A s / s k A 、 A / s k A 、 A / k A、 A s / k A)
GL_ONE_MINUS_SRC_ALPHA
(1,1,1,1)-(A s / s k A 、 A / s k A 、 A / k A、 A s / k A)
GL_DST_ALPHA
(A d / k A , d / k A A、 d / k A、 A d / k A)
GL_ONE_MINUS_DST_ALPHA
(1,1,1,1)-(A d / k A , d / k A A、 d / k A、 A d / k A)
GL_SRC_ALPHA_SATURATE
(i,i,i, 1)
在的表
i = min (As ,kA -Ad ) /kA
绘制 RGBA 模式中时,请确定像素的混合的 RGBA 值,系统使用以下公式:
R(d) = min(kR ,RssR +RddR )
G(d) = min(kG ,GssG +GddG )
B(d) = min(kB, BssB +BddB )
A(d) = min(kA ,AssA +AddA )
尽管两地精度明显,上述方程的混合算法不完全指定,因为混合操作具有不精确的整数颜色值。 但是,应等于之一的一个混合因素保证不会修改其被乘数,并为零的混合因子等将其被乘数减少到零。 因此,例如当 sfactor 是 GL_SRC_ALPHA、 dfactor 是 GL_ONE_MINUS_SRC_ALPHA,和 A s 等于 k A,方程降低简单更换:
Rd = Rs
Gd = Gs
B d = Bs
Ad = A[1]s
示例
透明度最好使用从最远到最近存储图元的混合函数( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) 来实现。 请注意此透明度计算不需要帧缓冲区中的 alpha 位平面。
您还可以使用 glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ),其对于以任意顺序渲染反锯齿点和线也是非常有用的。
若要优化的多边形消除锯齿,可使用从最远到最近存储多边形的混合函数 glBlendFunc ( GL_SRC_ALPHA_SATURATE, GL_ONE )。 目的 alpha 位平面存储累积的覆盖,必须使用这个平面以使这个混合函数正确进行操作。
输入(源) Alpha 可以被看作一种材料不透明性,范围从 1.0 (KA)开始,这时代表完全不透明度,一直到0.0 (0) 这时代表完全透明。
在启用多个颜色缓冲区的绘图时,GL分别为每个已启用的缓冲区执行混合,使用该缓冲区的内容作为目标颜色。 (请参阅 glDrawBuffer)。

OPenGL glBlendFunc函数相关推荐

  1. OpenGL的函数(GL)

    目前OpenGL的函数主要包含在3个库中  1.GL 函数库  2.GLU 函数库  3.GLUT 函数库 1.GL 库函数  颜色编辑  -------------------  glShadeMo ...

  2. OpenGL glBlendFunc() 设置颜色混合 透明度叠加计算

    glBlendFunc();–混合 OpenGL 会把源颜色和目标颜色各自取出,并乘以一个系数(源颜色乘以的系数称为"源因子",目标颜色乘以的系数称为"目标因子" ...

  3. OpenGL画矩形函数:glRectf,四个参数分别表示了位于对角线(左下到右上)上的两个点的横纵坐标

    OpenGL画矩形函数:glRectf glRectf:画一个矩形,四个参数分别表示了位于对角线(左下到右上)上的两个点的横纵坐标(并且以窗口的中心点为原点,相当于以它为原点建立了一个二维坐标系) 例 ...

  4. OpenGL gluLookat()函数的实现

    OpenGL gluLookat()函数的实现 函数形式: gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble center ...

  5. OpenGL——颜色混合 glBlendFunc函数

    混合的概念 何谓混合,混合就是指把两种颜色混在一起.具体一点,也就是说把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果. 假设我们需要绘制这样一个场景:透过红色的玻 ...

  6. iOS中 openGL常用函数记录(部分)

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 注:这行代码是用于清楚屏幕.GL_DEPTH_BUFFER_BIT 清除深度缓冲 glVerte ...

  7. OpenGL LookAt函数理解

    前言:记录OpenGL学习过程中的一些知识点,以个人理解为主. LookAt函数将顶点的世界空间坐标转换为观察空间坐标,实际上是以相机为原点重新定义的三维空间. glm::mat4 LookAt(gl ...

  8. openGL glColor3f函数颜色

    <span style="background-color: rgb(255, 255, 255); ">在OpenGl中设置颜色,一般可以使用glColor3f(). ...

  9. OpenGL glViewport()函数

    1.glViewport()  用来设置视口大小 void glViewport(GLint x,GLint y,GLsizei width,GLsizei height); 对于一个OpenGL坐标 ...

最新文章

  1. 【Android 逆向】Frida 框架 ( Frida 框架使用环境 | Frida 框架作用 | Frida 框架模块 )
  2. UA MATH567 高维统计II 随机向量10 Grothendieck不等式的证明 版本二:kernel trick
  3. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之10.Web_工程结构
  4. linux文件描述符设置
  5. python中 for ... else ... 的用法
  6. wpf 图表控件_LightningChart为外汇衍生品交易商提供数据可视化图表支持
  7. synchronized原理_synchronized关键字的作用、原理以及锁优化
  8. Omi框架学习之旅 - 通过对象实例来实现组件通讯 及原理说明
  9. 批处理停止php服务,通过批处理启动和停止MSSQL+IIS
  10. 图片 和 base64 互转
  11. 计算机用户目录是什么,c盘里面users是什么文件夹
  12. 2022-2028年中国产学研合作行业深度调查与战略咨询报告
  13. qlv格式转换成mp4 视频格式转换
  14. k8s(十三)、企业级docker仓库Harbor在kubernetes上搭建使用
  15. 分享微信使用技巧,快来涨姿势啦
  16. OK3399设置GPIO默认低电平
  17. 安徽大学计算机专业全国大学排名,2017安徽大学优势专业排名
  18. 第015篇:ArcGIS中标注的使用方法(二)
  19. web audio api 实现音频播放
  20. python实例练习(3)多级雷达图绘制

热门文章

  1. AP宏观经济学真题解析
  2. 2020亚洲品牌500强榜单发布,阿里巴巴、华为、中国工商银行、腾讯等入选前十...
  3. 2022执业护士资格考试专业实务考场练习题及答案
  4. 如何管理与改进低质供应商?帮助供应商提升自身质量能力?
  5. 论开发能力提高之道-御剑飞升的实现
  6. XTU_OJ_1043 菱形Ⅰ
  7. Linux内核分析——第八周学习笔记
  8. PIL库中的paste函数
  9. android常用库
  10. 巨蛇座发现雾蒙蒙的新星盘(Misty star)