Direct3D绘制流水线

本文详细介绍了Direct3D的绘制流水线,从局部坐标系到世界坐标系的转换,包括平移、旋转和缩放操作。接着讨论了观察坐标系、背面消隐、光照、裁剪、投影、视口变换和光栅化等关键步骤,全面揭示3D图形的生成过程。
摘要由CSDN通过智能技术生成

一、绘制流水线简介


            场景(scene)是物体或模型的集合。任何物体都可以用三角形网格(triangle mesh)逼近表示。三角形网格是构建物体模型的基本单元。

         摄像机指定了场景对观察者的可见部分,即我们将依据哪部分3D场景来创建2D图像。在世界坐标系中,摄像机有一定的位置和方向,定义了可见的空间体积(volume of space)。下图展示了一个虚拟摄像机的模型:

         
        

           用几何学中的术语讲,上述的空间体积是一个平截头体(frustum)。在3D图形学中也可以称为视域体或视截体。采用视域体的主要原因是显示屏为矩形。那些位于视域体之外的物体是不可见的,在进一步处理时就应将其丢弃。丢弃这类数据的运算过程称为裁剪(clipping)

           投影窗口(projection window)是一个2D区域,位于视域体中的3D几何体通过投影映射到该区域中,这样便创建了3D场景的2D表示。很重要的一点是,矩形投影窗口在X和Y方向上的坐标范围是[-1,1]

          一旦建立了3D场景的几何描述,并设置好摄像机,我们下面的任务就是在显示器中建立该场景的2D表示。为实现这一目标所必需实施的一系列运算统称为绘制流水线(rendering pipeline),即 绘制流水线的功能是:在给定3D场景和指定观察方向的虚拟摄像机(virtual camera)的几何描述时,创建一副2D图像。

         下图为绘制流水线的大致流程:

         
 

二、绘制流水线详细介绍


一、局部坐标系

        局部坐标系(local space)或建模坐标系(modeling space),是用于定义构成物体的三角形单元列表的坐标系。采用局部坐标系的优势体现在它可以简化建模过程,局部坐标系允许我们构建模型时无需考虑位置、大小或相对于其他物体的朝向。下图是一个在自身局部坐标系中构建的茶壶:

       

二、世界坐标系

         构建各种物体模型时,每个模型都位于其自身的局部坐标系中。我们还需要将这些物体组织在一起构成世界坐标系(全局坐标系)中的场景。位于局部坐标系中的物体通过一个称为世界变换(world transform)的运算过程变换到世界坐标系(world space)中,该变换通常包括平移(translation)、旋转(rotation)以及缩放(scaling)运算,分别用于设定该物体在世界坐标系中的位置、方向以及模型的大小。

        世界变换用一个矩阵表示,并有Direct3D通过IDirect3DDevice::SetTransform方法来加以应用,该方法的声明如下:
        IDirect3DDevice::SetTransform(
                D3DTRANSFORMSTATETYPE State,
                const D3DMATRIX* pMatrix);

        第一个参数表示变换的类型:
            进行世界变换时,取值D3DTS_WORLDÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值