一、概念:简言之,即在颜色缓存区和深度缓存区中,新旧颜色的覆盖和替换问题;已经存在于缓存区的为目标颜色,即将进入缓存区的为源颜色;

二、应用场景:在不透明的图形前绘制一个透明的图形;

三、主要代码实现

//核心代码

void RenderScene()
{
//清除缓存区
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); //设置四个固定矩形颜色
GLfloat vRed[] = {1.0f, 0.0f, 0.0f, 0.5f};
GLfloat vGreen[] = {0.0f, 1.0f, 0.0f, 1.0f};
GLfloat vBlue[] = {0.0f, 0.0f, 1.0f, 1.0f};
GLfloat vBlack[] = {0.0f, 0.0f, 0.0f, 1.0f}; //绘制四个固定矩形
//GLT_SHADER_IDENTITY:单元着色器
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
redBatch.Draw();
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vGreen);
greenBatch.Draw();
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vBlue);
blueBatch.Draw();
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vBlack);
blackBatch.Draw(); //移动矩形设置混合功能
//开启混合功能
glEnable(GL_BLEND);
//设置混合因子
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//使用固定管线着色器
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
//绘制
squareBatch.Draw();
//关闭混合功能
glDisable(GL_BLEND); //后台渲染完成交给前台
glutSwapBuffers();
}

四、效果

GitHub

最新文章

  1. iOS CocoaPods 版本安装问题
  2. EL表达式语言总结
  3. CLR via C# 3rd - 06 - Type and Member Basics
  4. python types模块
  5. 【BZOJ-1068】压缩 区间DP
  6. 【英语】Bingo口语笔记(58) - blow系列
  7. NODE JS拼命吹,我就不喜欢. 别问为什么,直觉.
  8. NOI题库05 派
  9. 符号化Symbol(符号)体系
  10. python与opencv的结合之人脸识别值
  11. 关于MATLAB处理大数据坐标文件2017620
  12. js算法初窥02(排序算法02-归并、快速以及堆排序)
  13. Android SQLite 数据库学习
  14. Java多线程系列(1)
  15. 如何生成SSH key及查看SSH key
  16. Centos7通过yum安装最新MySQL
  17. opengl渲染管线梳理
  18. Johnny Solving CodeForces - 1103C (构造,图论)
  19. C++和C#转换
  20. FFmpeg在Android上的移植优化步骤

热门文章

  1. redis介绍(5)主从复制
  2. JQuery this和$(this)的区别
  3. mysql 8.0.11 安装(windows)
  4. Python学习---IO的异步[tornado模块]
  5. Linux fsck命令详解
  6. PHP-7的FPM服务的启动
  7. QuickBI助你成为分析师-数据建模(一)
  8. 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户
  9. (1)String类 (2)StringBuilder类和StringBuffer类 (3)日期相关的类
  10. 转贴:C语言链表基本操作