以前我们使用glColor<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3f来指定一个顶点颜色,它代表使用GL_RGB 也就是3个颜色分量。现在你可以使用GL_RGBA 来增加一个Alpha值了。我们可以用glColor4f() 函数代替glColor3f() 函数。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Alpha值可以理解为材质(material) 的不透明程度, 0.0代表材质完全透明, 1.0代表材质完全不透明。

混合公式:
(Rs As + Rd (1 - As), Gs As + Gd (1 - As), Bs As + Bs (1 - As), As As + Ad (1 - As))

代码说明:
    指定顶点以全亮度(当前颜色RGB分量全为1.0为)绘制,然后Alpha指定为0.5,表示为半透明。当使用纹理影射的时候我们怎样指定颜色呢? 很简单, 在调制的纹理模式中, 纹理的每个像素点都会与当前颜色相乘。 所以, 如果要被绘制的颜色为(0.5, 0.6, 0.4), 通过相乘我们可以得到(0.5, 0.6, 0.4, 0.5)。(alpha默认值为1.0)下面代码指定

glColor4f(1.0f,1.0f,1.0f,0.5f);                           // Full Brightness, 50% Alpha

指定源混合因子和目标混合因子

glBlendFunc(GL_SRC_ALPHA,GL_ONE);

glEnable(GL_BLEND);          // Turn Blending On

glDisable(GL_DEPTH_TEST);//关闭深度测试,这样做是为了被遮住的三角形也能被渲染。(这是不正确的,因为如果混合的层数多了将引起错误正确方法如下)

这样做主要是为了简化,教程主要说明混合的原理。正确的方法是在整个场景绘制完之后再绘制所有的透明 (alpha < 1.0) 多边形, 而且要按照由远及近的深度顺序, 这是由于事实上按照不同的顺序混合两个(1和2)多边形会得到不同的结果。 假如多边形1距离我们最近, 那么正确的方法是先绘制多边形2, 然后是多边形1。 如果你看着它, 那么真实情况就是它们后面的光首先经过多边形2, 然后经过多边形1, 最后到达你的眼睛。 所以, 你需要按照深度将透明的多边形进行排序, 开着深度缓存并在整个场景绘制完毕之后再绘制它们, 否则将得到不正确的结果

转载于:https://www.cnblogs.com/SweetDream/archive/2006/02/13/329932.html

NeHe_Lesson8 Blending相关推荐

  1. 集成学习VotingClassifier、HistGradientBoostingClassifier、Stacking、Blending

    集成学习VotingClassifier.HistGradientBoostingClassifier.Stacking.Blending 目录 集成学习VotingClassifier.HistGr ...

  2. Stacking+Blending

    Stacking+Blending 一.Stacking思想简介 1.Stacking的思想是一种有层次的融合模型,比如我们将用不同特征训练出来的三个GBDT模型进行融合时,我们会将三个GBDT作为基 ...

  3. OpenGL中的混合(Blending)

    这篇是在上一篇的基础上修改而来的,对应着Nehe教程的第8课,代码仍然采用MFC框架来实现. 其中InitGL需要做些修改,加入混合操作所需要的代码: BOOLCOpenGLDemoView::Ini ...

  4. Multi-band Blending

    Multi-band Blending from: http://aboutdada.com/?p=29 Posted on November 26, 2014 Multi-Band Blending ...

  5. OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))

    Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...

  6. Blending and Bagging

    Blending and Bagging 目录(?)[+] 第七讲:Blending and Bagging 1.Motivation of Aggregation(融合的动机) 恰当的融合可以得到更 ...

  7. stacking与blending的区别

    网上通用的解释: stacking是k折交叉验证,元模型的训练数据等同于基于模型的训练数据,该方法为每个样本都生成了元特征,每生成元特征的模型不一样(k是多少,每个模型的数量就是多少):测试集生成元特 ...

  8. OpenGL blending sort 混合排序(前后)的实例

    OpenGL blending sort 混合排序 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #in ...

  9. OpenGL blending 混合的实例

    OpenGL blending 混合 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include & ...

  10. OpenGL 混合Blending

    OpenGL混合Blending 混合Blending简介 丢弃片段 混合 渲染半透明纹理 不要打乱顺序 混合Blending简介 OpenGL中,混合(Blending)通常是实现物体透明度(Tra ...

最新文章

  1. Java 洛谷 提交完题目的代码之后一直停留在 ( 正在等待编译……),刷新页面之后 ,显示 Unaccepted 0分
  2. 2021年中国电竞运动行业发展报告
  3. 利用python来求解网络的平均路径长度和聚类系数
  4. Logstash实践: 分布式系统的日志监控
  5. SwiftyJSON源码分析
  6. codesys的设备树重点详解
  7. 该网站安全证书有问题 宝塔面板配置ssl中遇到的“坑”
  8. JavaScript数组方法(最全)
  9. ES — — elasticsearch初探
  10. layui table表格中加input 日期插件
  11. sdn网络搭建以及负载均衡
  12. BUUCTF-MISC-九连环
  13. Unity3D空战游戏模板 Air Warfare
  14. 教你学Java | 带你学习Java多线程(续:创建线程的其他方式与activeCount方法的浅谈)
  15. 微程序控制及微程序设计实验报告
  16. Pytorch 学习率衰减 之 余弦退火与余弦warmup 自定义学习率衰减scheduler
  17. 又当爹又当妈的产品经理
  18. Workflow 一切皆是Task
  19. 2018有赞校招笔试题
  20. 程序员用得到的网站或工具

热门文章

  1. 《图解HTTP》阅读笔记--第六章--HTTP首部
  2. 2018-12-20 第二章Java 预习作业
  3. nginx 四种策略
  4. 经典:浅谈以太坊智能合约的设计模式与升级方法
  5. MapReduce的分区
  6. 权限管理系统之字典(代码)管理
  7. 15个最好的Bootstrap设计工具推荐
  8. 基于ipv6的socket通信(TCP)
  9. CF1033A. King Escape的题解
  10. Tomcat开发技术之与HTTP服务器的集成