OpenGL 混合功能
2024-10-15 04:28:53
一、概念:简言之,即在颜色缓存区和深度缓存区中,新旧颜色的覆盖和替换问题;已经存在于缓存区的为目标颜色,即将进入缓存区的为源颜色;
二、应用场景:在不透明的图形前绘制一个透明的图形;
三、主要代码实现
//核心代码
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();
}
四、效果
最新文章
- iOS CocoaPods 版本安装问题
- EL表达式语言总结
- CLR via C# 3rd - 06 - Type and Member Basics
- python types模块
- 【BZOJ-1068】压缩 区间DP
- 【英语】Bingo口语笔记(58) - blow系列
- NODE JS拼命吹,我就不喜欢. 别问为什么,直觉.
- NOI题库05 派
- 符号化Symbol(符号)体系
- python与opencv的结合之人脸识别值
- 关于MATLAB处理大数据坐标文件2017620
- js算法初窥02(排序算法02-归并、快速以及堆排序)
- Android SQLite 数据库学习
- Java多线程系列(1)
- 如何生成SSH key及查看SSH key
- Centos7通过yum安装最新MySQL
- opengl渲染管线梳理
- Johnny Solving CodeForces - 1103C (构造,图论)
- C++和C#转换
- FFmpeg在Android上的移植优化步骤
热门文章
- redis介绍(5)主从复制
- JQuery this和$(this)的区别
- mysql 8.0.11 安装(windows)
- Python学习---IO的异步[tornado模块]
- Linux fsck命令详解
- PHP-7的FPM服务的启动
- QuickBI助你成为分析师-数据建模(一)
- 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户
- (1)String类 (2)StringBuilder类和StringBuffer类 (3)日期相关的类
- 转贴:C语言链表基本操作