OpenGL学习笔记-Blending

混合方程中,Csource是片段着色器输出的颜色向量(the color output of the fragment shader),其权重为Fsource。Cdestination是当前存储在color buffer中的颜色向量(the color vector that is currently stored in the color buffer),其权重为Fdestination。Csource和Cdestination由OpenGL自动设置,但Fsource和Fdestination需要由我们进行设置(The source and destination colors will automatically be set by OpenGL, but the source and destination factor can be set to a value of our choosing)。当OpenGL渲染一个片段时,会根据混合方程对上述两个颜色向量进行加权组合(whenever OpenGL renders a fragment, it combines the current fragment's color with the fragment color currently in the color buffer),Cresult是加权组合后的结果,将保存到color buffer中,并且会将Cdestination覆盖掉。

要想实现混合的效果,需要先使能混合:

cpp 复制代码
glEnable(GL_BLEND);

然后设置混合方程中的Fsource和Fdestination,一种常用的设置如下:

cpp 复制代码
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glBlendFunc函数的原型如下,上述设置的含义是:Fsource取Csource的alpha分量,Fdestination取(1-Csource的alpha分量)。

cpp 复制代码
void glBlendFunc(GLenum sfactor, GLenum dfactor);

完成渲染后,需要将混合关闭:

cpp 复制代码
glDisable(GL_BLEND);

一个简单的例子:图1是待混合的两个片段,图2是混合方程,图3是混合得到的结果。


相关推荐
还下着雨ZG1 天前
VTK基础(01):VTK中的基本概念
图形渲染
和光同尘 、Y_____4 天前
BRepMesh_IncrementalMesh 重构生效问题
c++·算法·图形渲染
郝学胜-神的一滴7 天前
基于OpenGL封装摄像机类:视图矩阵与透视矩阵的实现
c++·qt·线性代数·矩阵·游戏引擎·图形渲染
玖釉-11 天前
OpenGL视图变换矩阵详解:从理论推导到实战应用
c++·图形渲染
元让_vincent13 天前
论文Review 3DGS HAC | ECCV2024 上海交大 莫纳什大学| 数10倍的3DGS模型压缩
3d·图形渲染·模型压缩·3dgs
郝学胜-神的一滴22 天前
Horse3D游戏引擎研发笔记(七):在QtOpenGL环境下,使用改进的Uniform变量管理方式绘制多彩四边形
c++·3d·unity·游戏引擎·图形渲染·虚幻·unreal engine
Duo1J22 天前
【OpenGL】LearnOpenGL学习笔记15 - 面剔除
笔记·学习·图形渲染
头发掉光的程序员23 天前
第七章 利用Direct3D绘制几何体
c++·windows·图形渲染·direct12
Jiezcode24 天前
Unreal Engine ClassName Rule
c++·游戏·图形渲染·虚幻引擎
郝学胜-神的一滴24 天前
深度解析游戏引擎中的相机:视图矩阵
程序人生·unity·矩阵·游戏引擎·godot·图形渲染·虚幻