转自:http://www.cnblogs.com/yujunyong/archive/2011/04/13/2015467.html
glBlendFunc();--混合
OpenGL 会把源颜色和目标颜色各自取出,并乘以一个系数(源颜色乘以的系数称为“源因子”,目标颜色乘以的系数称为“目标因子”),然后相加,这样就得到了新的颜 色。(也可以不是相加,新版本的OpenGL可以设置运算方式,包括加、减、取两者中较大的、取两者中较小的、逻辑运算等,但我们这里为了简单起见,不讨 论这个了) 下面用数学公式来表达一下这个运算方式。假设源颜色的四个分量(指红色,绿色,蓝色,alpha值)是(Rs, Gs, Bs, As),目标颜色的四个分量是(Rd, Gd, Bd, Ad),又设源因子为(Sr, Sg, Sb, Sa),目标因子为(Dr, Dg, Db, Da)。则混合产生的新颜色可以表示为: (Rs*Sr+Rd*Dr, Gs*Sg+Gd*Dg, Bs*Sb+Bd*Db, As*Sa+Ad*Da) 当然了,如果颜色的某一分量超过了1.0,则它会被自动截取为1.0,不需要考虑越界的问题。
源因子和目标因子是可以通过glBlendFunc函数来进行设置的。glBlendFunc有两个参数,前者表示源因子,后者表示目标因子。这两个参数可以是多种值,下面介绍比较常用的几种。
GL_ZERO: 表示使用0.0作为因子,实际上相当于不使用这种颜色参与混合运算。
GL_ONE: 表示使用1.0作为因子,实际上相当于完全的使用了这种颜色参与混合运算。
GL_SRC_ALPHA:表示使用源颜色的alpha值来作为因子。
GL_DST_ALPHA:表示使用目标颜色的alpha值来作为因子。
GL_ONE_MINUS_SRC_ALPHA:表示用1.0减去源颜色的alpha值来作为因子。
GL_ONE_MINUS_DST_ALPHA:表示用1.0减去目标颜色的alpha值来作为因子。 除此以外,还有GL_SRC_COLOR(把源颜色的四个分量分别作为因子的四个分量)、GL_ONE_MINUS_SRC_COLOR、 GL_DST_COLOR、GL_ONE_MINUS_DST_COLOR等,前两个在OpenGL旧版本中只能用于设置目标因子,后两个在OpenGL 旧版本中只能用于设置源因子。新版本的OpenGL则没有这个限制,并且支持新的GL_CONST_COLOR(设定一种常数颜色,将其四个分量分别作为 因子的四个分量)、GL_ONE_MINUS_CONST_COLOR、GL_CONST_ALPHA、 GL_ONE_MINUS_CONST_ALPHA。另外还有GL_SRC_ALPHA_SATURATE。新版本的OpenGL还允许颜色的alpha 值和RGB值采用不同的混合因子。
举例来说: 如果设置了glBlendFunc(GL_ONE, GL_ZERO);,则表示完全使用源颜色,完全不使用目标颜色,因此画面效果和不使用混合的时候一致(当然效率可能会低一点点)。如果没有设置源因子和目标因子,则默认情况就是这样的设置。 如果设置了glBlendFunc(GL_ZERO, GL_ONE);,则表示完全不使用源颜色,因此无论你想画什么,最后都不会被画上去了。(但这并不是说这样设置就没有用,有些时候可能有特殊用途) 如 果设置了glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);,则表示源颜色乘以自身的alpha 值,目标颜色乘以1.0减去源颜色的alpha值,这样一来,源颜色的alpha值越大,则产生的新颜色中源颜色所占比例就越大,而目标颜色所占比例则减 小。这种情况下,我们可以简单的将源颜色的alpha值理解为“不透明度”。这也是混合时最常用的方式。 如果设置了glBlendFunc(GL_ONE, GL_ONE);,则表示完全使用源颜色和目标颜色,最终的颜色实际上就是两种颜色的简单相加。例如红色(1, 0, 0)和绿色(0, 1, 0)相加得到(1, 1, 0),结果为黄色。
注意: 所 谓源颜色和目标颜色,是跟绘制的顺序有关的。假如先绘制了一个红色的物体,再在其上绘制绿色的物体。则绿色是源颜色,红色是目标颜色。如果顺序反过来,则 红色就是源颜色,绿色才是目标颜色。在绘制时,应该注意顺序,使得绘制的源颜色与设置的源因子对应,目标颜色与设置的目标因子对应。不要被混乱的顺序搞晕 。
分享到:
相关推荐
基于SSM的毕业设计源码
本项目是一个基于Spring Boot和Vue.js技术栈的多彩吉安红色旅游网站的设计与实现。该项目旨在打造一个集信息展示、在线互动、旅游服务于一体的综合性红色旅游平台,通过信息化手段传承和弘扬吉安地区的红色文化。 项目的主要功能包括:红色景点介绍、旅游线路规划、在线预订服务、用户评论互动以及后台管理系统等。通过Spring Boot框架搭建的后端服务,实现了数据的存储、处理与业务逻辑;而Vue.js则用于构建用户友好的前端界面,提供了流畅的用户体验。 此外,项目还注重用户体验优化,通过响应式设计确保网站在不同设备上的良好展示效果。同时,后台管理系统为管理员提供了便捷的数据管理和内容更新功能,确保网站信息的实时性和准确性。 此项目不仅适合作为计算机相关专业学生的毕业设计,帮助他们提升实践能力和技术水平,也适合Java学习者进行项目实战练习,加深对相关技术的理解和应用。
技术资料分享SD卡2.0协议很好的技术资料.zip
classes.dex
STM32F407单片机无源蜂鸣器播放音乐
期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期末大作业c语言期末大作业源代码+文档说明(高分项目下载即用)期
Python数据分析与应用案例教程 第2章.pptx
内容概要:本文档提供了全面的MySQL数据库考试题库和习题集,涵盖MySQL的基本概念、数据操作、表结构设计、SQL语句的使用、索引、视图、触发器、存储过程和事件等主题。每道题都附有详细答案和解析,帮助读者加深理解和掌握MySQL的核心知识点和技术细节。 适合人群:对MySQL数据库感兴趣的初学者和具有一定经验的技术人员,特别是需要参加相关考试或面试的人员。 使用场景及目标:主要用于复习和巩固MySQL的基础知识,准备数据库相关考试,提高实际操作能力。 阅读建议:文档内容丰富,涵盖了多个方面的知识点,建议按章节顺序学习,边做题边查阅答案解析,结合实际操作进行练习。
ISO 643 2024 钢表观晶粒度的显微测定.pdf
本项目是一个基于Spring Boot和Vue框架的建筑工程项目管理系统的完整源码,旨在为计算机相关专业的学生提供一个实际的毕业设计项目,同时也适合Java学习者进行实战练习。该项目模拟了一个真实的建筑工程项目管理环境,涵盖了从项目规划、资源分配到进度跟踪和成本控制等多个关键方面。 系统的主要功能包括用户管理、项目管理、资源管理和报表生成等。用户管理模块允许管理员创建和管理用户账户,分配不同的权限。项目管理模块使用户能够创建项目计划,跟踪项目进度,并更新项目状态。资源管理模块帮助管理者有效分配人力、物力和财力资源。报表生成功能则提供了丰富的数据可视化工具,帮助决策者理解项目进展和财务状况。 该项目采用Spring Boot框架构建后端服务,利用Vue.js框架开发前端界面,实现了前后端分离的架构设计。这种设计不仅提高了系统的灵活性和可维护性,还优化了用户体验。通过这个项目,学习者可以深入理解现代Web应用开发的完整流程和技术栈。
本项目是一个基于Spring Boot和Vue.js的候鸟监测数据管理系统,旨在提供一个高效、便捷的平台,用于收集、存储、分析和展示候鸟迁徙数据。项目的主要功能包括实时数据采集、数据分析、数据可视化以及用户管理。通过使用Spring Boot框架,后端实现了强大的数据处理能力和稳定的API服务,确保了系统的高性能和高可用性。前端则采用Vue.js框架,提供了友好的用户界面和流畅的用户体验。 系统能够实时接收来自不同监测点的数据,并通过大数据分析技术,自动识别候鸟的种类和迁徙路径。数据分析模块还提供了多种统计图表,帮助研究人员直观地理解数据背后的趋势和模式。此外,系统还具备用户权限管理功能,确保不同级别的用户只能访问相应的功能和数据。 开发此项目的目的是为了满足学术研究和实际应用的需求,同时为计算机相关专业的学生提供一个完整的实战案例,帮助他们更好地理解和应用现代软件开发技术。
系统的主要功能包括: 1. **用户注册与登录**:考生需注册账号并登录才能使用系统,注册时需要验证邮箱或手机号的有效性,登录时需确保用户名和密码匹配。 2. **在线考试**:考生在指定的时间内完成试卷,系统应能自动计时并防止作弊。试题可能包括选择题、填空题、简答题等多种类型。 3. **成绩计算与显示**:考试结束后,系统自动批改选择题,并根据设定的评分标准对主观题进行评分,最终生成考生的总成绩。 4. **试卷查询与解析**:考生可以查看自己的考试记录,包括分数、错题分析等。同时,系统提供试题解析,帮助考生理解错误原因。 5. **安全性与稳定性**:系统应具有良好的安全防护机制,防止SQL注入、XSS攻击等,同时保证在高并发下稳定运行。 6. **后台管理**:管理员可以添加、修改和删除试题,设置考试时间,查看所有考生的成绩和考试情况,便于监控和维护系统。 通过上述功能的实现,基于SSM框架的在线考试系统为考生提供了一个便捷、安全的考试环境,同时也为教育机构提供了高效的教学评估工具。在实际开发过程中,还需要考虑用户体验、性能优化、数据备份和恢复等多方面的问题,以确
E版数字标牌信息发布系统+android端
CSP-J历年复赛真题资源.txt
基于SSM的毕业设计源码
7次多项式对若干个点进行拟合,并生成图像-MATLAB代码
基于SSM的毕业设计源码
理发店预约小程序毕业设计论文
macOS_Sequoia_15.1.password(imacos.top).rdr.split.047
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse