DX9的绘制流水线

本文介绍了Direct3D 9的绘制流水线,包括局部坐标系、世界坐标系、观察坐标系、背面消隐、光照、裁剪、投影、视口变换和光栅化等关键步骤。通过这一系列变换和处理,3D场景在显示器中以2D形式呈现。在观察坐标系中,Direct3D默认对顺时针排列的三角单元进行背面消隐,可以通过设置D3DRS_CULLMODE调整。投影和视口变换确保3D几何体正确映射到2D屏幕。光栅化计算每个像素颜色,最终生成2D图像。
摘要由CSDN通过智能技术生成

一旦我们建立了3D场景的几何描述,确定好虚拟摄影机,接下来的任务就是在显示器中建立3D场景的2D表示,为了实现这一个过后才能,我们专门的流程来完成它,我们称之为绘制流水线。大致如下图:(从左至右)

在绘制流水线中,有几个比较重要的部分就是,是坐标系的变换,这类坐标的变换通常是使用矩阵来实现的,Direct3D可以帮助我们实现这些变换,我们所提供的仅仅只是提供需要变换的矩阵以及变换的类型,,Direct3D中变换矩阵的方法如下:

IDirect3DDevice9->SetTransform方法,该方法有两个参数:一个变换的类型,一个是需要变换的矩阵。

我们将在你接下来的部分详细讨论。

局部坐标系

用于定义构成物体的三角单元列表的坐标系,也就是以模型为中心的坐标系。

优点:简化建模过程

世界坐标系

将很多个物体组织在一起的时候,就是一个大的场景,这个场景为了统一一个标准,就会使用世界坐标系,从局部坐标系到世界坐标系的变换叫做:世界变换。该变换通常包括缩放、平移、旋转等。

世界变换通过一个矩阵来表示,并且IDirect3DDevice9::SetTransform方法来加以应用,我们将该方法的第一个参数设置为:D3DTS_WOLED,然后地问个参数表示所采用的世界变换的矩阵。

例如:假定我们想一个立方体的中心位于世界坐标的中的(-3,2,6)点上面,让一个球体的中心位于点(5,0,-2)上,可以这么实现:

//构建立方体的
D3DXMATRIX cubeWorldMatrix;
D3DXMatrixTranslation(&cubeWorldMatrix, -3.0f, 2.0f, 6.0f);

//构建球体的
D3DXMATRIX sphereworldMatrix;
D3DXMatrixTranslation(&sphereworldMatrix, 5.0f, 0.0f, -2.0f);

//设置多维数据集的转换
Device->SetTransform(D3DT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值