管理3D图形数据
使用OpenGL渲染3D图形通常需要将若干数据集发送给OpenGL着色器管线。举个例子:想要绘制一个简单的3D对象,比如一个立方体,至少需要发送以下项目:
- 立方体模型的顶点;
- 控制立方体在3D空间中朝向表现的变换矩阵;
- 把数据发送给OpenGL管线。
3.1. 通过顶点属性的缓冲区。
3.2. 直接发送给统一变量。
关键模块介绍
渲染3D图形中需要频繁用到缓冲区、统一变量、顶点属性插值、模型-视图和透视矩阵、矩阵堆栈等关键模块。因此这一讲对这几个部分进行简单的总结。
1. 缓冲区
想要绘制一个对象,它的顶点数据需要被发送给顶点着色器。通常顶点数据会被放在一个缓冲区中,并把这个缓冲区和着色器中声明的顶点属性相关联。
OpenGL中提供了顶点缓冲对象(VBO) 和 顶点数组对象 (VAO),其中VBO就是缓冲区数组,VAO用于组织缓冲区,让缓冲区在复杂场景中更容易操控。
在应用中,我们可以声明多个缓冲区,并在各个缓冲区中绘制不同的模型。
2. 统一变量
统一变量采用“Uniform”关键字声明变量,可以让c++程序和顶点着色器进行信息交互,在渲染的过程中实现动态调整。
3. 顶点属性插值
通常我们采用顶点着色器是对单个顶点进行操作,而在光栅化的过程中我们需要对片段进行着色,于是存在插值操作。
统一变量本身不是插值的,无论有多少顶点,它始终包含相同的值。为了让结果看起来更加真实,通过缓冲区发送给顶点属性的所有值都将在管线中被进一步插值。

最低0.47元/天 解锁文章
4374

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



