第08课:混合 (参照NeHe)
这次教程中,我们将在纹理映射的基础上加上混合,使它看起来具有透明的效果,当然解释它不是那么容易但代码并不难,希望你喜欢它。
OpenGL中的绝大多数特效都与某些类型的(色彩)混合有关。混色的定义为,将某个像素的颜色和已绘制在屏幕上与其对应的像素颜色相互结合。至于如何结合这两种颜色则依赖于颜色的alpha通道的分量值,以及所用的混色函数。Alpha通常是位于颜色值末尾的第4个颜色组成分量,一般都认为Alpha分量代表材料的透明度。也就是说,alpha值为0.0时所代表的材料是完全透明的,alpha值为1.0时所代表的材料则是完全不透明的。
在OpenGL中实现混色的步骤类似于我们以前提到的OpenGL过程,接着设置公式,并在绘制透明对象时关闭写深度缓存。因为我们想在半透明的图形背后绘制对象,这不是正确的混色方法,但绝大多数时候这种做法在简单的项目中都工作得很好。正确的混色过程应该是先绘制全部非透明场景之后,再绘制透明的图形,并且要按照与深度缓存相反的次序来绘制(先画最远的物体)。
程序运行时效果如下:
下面进入教程:
我们这次将在第07课的基础上修改代码,首先打开myglwidget.h文件,增加一个布尔变量m_Blend来记录是否开启混合,修改后代码如下:
#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H
#include <QWidget>
#include <QGLWidget>
cla

本篇Qt OpenGL教程介绍了如何在纹理映射基础上添加混合效果,以创建透明感。通过调整颜色的alpha通道和使用混色函数,实现物体的透明度控制。教程中详细讲解了实现混合的步骤,包括在非透明场景绘制后,按深度缓存反向顺序绘制透明图形。最终展示了一个简单的应用实例。
最低0.47元/天 解锁文章
552

被折叠的 条评论
为什么被折叠?



