第2章 绘制流水线

版权声明:转载请注明出处 https://blog.csdn.net/weixin_39918693/article/details/88683286

渲染管线的功能:在给定3D场景和指定观察方向的虚拟摄像机(virtual camera)的几何描述时,创建一幅2D图像


1、模型表示

场景(scene)是物体或模型的集合

任何物体都可以用三角形网格(triangle mesh)逼近表示,三角形网格是构建物体模型的基本单元

三角形网格可用如下术语来表示:多边形(polygons)图元(primitives)网格几何元(mesh geometry)

除了三角形图元,还有线图元点图元

描述三角形图元的时候,需要3个顶点的位置;描述物体时,需要构成该物体的三角形单元列表

1.1、顶点格式

Direct3D赋予了我们自行定义顶点格式的自由

顶点结构定义好之后,就需要用灵活顶点格式(Flexible Vertex Format, FVF)标记的组合来描述顶点的组织结构

定义灵活顶点格式时必须遵循的一个约定是:灵活顶点格式标记的指定顺序必须与顶点结构中相应类型数据定义的顺序保持一致

struct NormalTexVertex{
	float _x, _y, _z;
	float _nx, _ny, _nz;
	float _u, _v;
};

#define FVF_NORMAL_TEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)

1.2、三角形单元

在描述三角形单元的时候,三角形各顶点的指定顺序非常重要,我们称之为绕序(winding order)

1.3、索引

为了能够在众多三角形单元之间共享公共顶点,我们需要引入索引(indices)

我们创建一个顶点列表和一个索引列表。顶点列表包含全部独立顶点;索引列表包含了指向顶点列表的索引,这些索引规定了为构建三角形单元,各顶点应按何种方式来组织


2、虚拟摄像机

摄像机指定了场景对观察者的可见部分,即我们将依据哪部分3D场景来创建2D图像

在世界坐标系中,摄像机有一定的位置和方向,通过视域体(frustum)定义了可见的空间体积

投影窗口(projection window)是一个2D矩形区域,位于视域体中的3D几何体通过投影变换映射到该区域中,便创建了3D场景的2D表示。投影窗口在X和Y方向坐标的最小值为-1,最大值为1


3、绘制流水线

为了在显示器中建立摄像机所见的3D场景的2D表示而必须实施的一系列运算统称为绘制流水线(rendering pipeline)


局部坐标系 \Longrightarrow^{世界变换} 世界坐标系\Longrightarrow 观察坐标系\rightarrow 背面消隐\rightarrow 光照\rightarrow 裁剪\rightarrow投影\rightarrow视口坐标系\rightarrow光栅化

世界变换
描述
局部坐标系
世界坐标系
观察坐标系

猜你喜欢

转载自blog.csdn.net/weixin_39918693/article/details/88683286