Direct3D的简介

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Direct3D的简介

这一章的内容包括Direct3D的3D图形功能API(应用程序编程接口)的简要介绍,图形处理流水线的总揽以及快速入门的简短教程。

本章可分为以下几个部分:

●Direct3D体系结构

●3维坐标系与几何

●Direct3D对象

●设备

●资源

●状态

●顶点的声明

●顶点的格式

●对象几何

●渲染

Direct3D体系结构

这一部分介绍了Direct3D与DirectX其他组成部分、操作系统和系统硬件的关系。

包括以下几个主题:

●Direct3D体系结构总揽

●硬件抽象层

●与系统的整合

●可编程顶点作色器体系结构

●可编程像素作色器体系结构

Direct3D体系结构总揽

上为图像处理流水线的结构图,以下是我对图的理解:

Vertex Data & Primitive Data:多边形的几何数据。其中Vertex Data是顶点数据,Primitive Data是其它相关的原始数据。

Tessellation:字面上的意思是镶嵌成小方格,实际的作用是将几何体拆为多个小的几何体以便于处理。数学上定义为“铺嵌”,详见tessellation。计算机科学上对于此词的翻译各异,如顶点镶嵌、棋盘型嵌石饰等。我以为目前几种译法不慎妥当,应采用“铺嵌”为宜。

Fixed Function Pipeline:固定功能流水线。系统提供的功能固定的图形处理流水线。

Programmable Pipeline:可编程流水线。系统将显示设备暴露给编程者,从而编程者可以自己编写图形处理的功能模块并加入到流水线中。其较之固定功能流水线更为灵活,可以简化流水线的处理过程,甚至实现固定功能流水线没有的功能。

以上两种流水线所做的处理包括:几何变换、顶点处理、光线处理等。

Clipping:裁剪。基于观察棱台和视口的裁剪。

Back Face Culling:背向面剔除。

Attribute Evaluation:品质评估?

Rasterization:光栅化。将三维场景映射到二维显示平面的过程

Pixel Shader:像素着色器。

Texture Surface:纹理表面。

Texture Sampler:纹理采样器。决定如何从纹理中选取适当的点对应到多边形中。

Alpha Test:透明度测试。确定一个点的透明度是否满足一定的条件,否则不予显示。

Depth Test:深度测试。确定一个点的透明度是否满足一定的条件,否则不予显示。

Stencil Test:蒙板测试。

Fogging:雾化。

Alpha Blending:半透明混合。

硬件抽象层

硬件抽象层(HAL)是由设备制造者提供的硬件相关的接口。Direct3D通过HAL直接作用于显示硬件,应用程序不直接与HAL交互。在HAL提供的底层结构之上,Direct3D 向应用程序暴露出一组用于图形显示的接口,由此实现了设备无关性。

在操作系统下HAL是通过32位或16位编码来实现,Windows XP,Windows 2000 & Windows NT下是32位编码,Windows 98 & Me是32位和16位的结合。HAL可以是显示设备驱动程序的一部分,或是通过驱动开发者定义的专门接口与驱动通信的独立的动态链接库。

HAL由芯片制造商、电路板生产者或原始设备制造商(OEM)提供。并且只提供硬件相关的功能,不支持任何模拟。也就是说,如果某种功能不被该硬件支持,那么HAL也不会报告该功能被支持。另外,HAL不验证参数的正确性,Direct3D会在调用HAL之前验证参数。

在DirectX9.0中,HAL有3种不同的顶点处理模式:软件处理,硬件处理和混合处理。纯设备模式是HAL设备的一种变体,它只支持硬件顶点处理,而且只有很少一部分设备状态可以被应用程序查询。纯设备模式只在显示适配器能力最低的情况下可用。

与系统的整合

下图表示了Direct3D,Windows图像设备接口(GDI),硬件抽象层以及硬件之间的关系。

从上图可以看到,Direct3D和GDI都通过设备驱动来使用硬件。不同的是,当Direct3D 选择使用HAL的时候,可以得到由硬件特性带来的种种好处,因为HAL是硬件相关的,它可以向上提供硬件加速。在程序运行时可以使用Direct3D提供的方法来获取硬件特性的信息。

可编程顶点作色器体系结构

暂略。

可编程像素作色器体系结构

暂略。

3维坐标系与几何

这一部分是创建3维场景最重要的几何知识。包括:

●3D坐标系

●3D原始几何体

●面与顶点法向量

●三角形光栅化规则

●矩形

●三角形内插值

●矢量、顶点和四元数

3D坐标系

一般3D图形系统常用的笛卡尔坐标系有两种:左手坐标系和右手坐标系。如图所示:

Direct3D中采用的是左手坐标系。如果想把使用右手坐标系的系统移植到Direct3D上,需要做以下两个改变。

1、按顺时针翻转三角形的顶点顺序。如原来是v0,v1,v2,那么在Direct3D中就

要改为v0,v2,v1。

2、观察矩阵在z轴方向上乘-1。也就是说观察矩阵的31,32,33,34几个数据要

反号。

为了得到等价的右手坐标系世界,Direct3D提供了D3DXMatrixPerspectiveRH和D3DXMatrixOrthoRH函数来定义投影变化矩阵。慎用D3DXMatrixLookAtRH函数。

除此之外,还有其它一些不常用的坐标系。要把它们转化到Direct3D中,只需做好相应的三维变换即可。

3D原始几何体

3D原始几何体是由一组顶点组成的单个3维实体。其中最简单的是一组点的集合,又叫点表。

通常3D几何体是指多边形。多边形是由至少三个顶点组成的封闭的3D模型,其中最简单的是三角形。Direct3D采用三角形来组成大多数的几何形体,其原因是三角形的三个顶点是共面的,渲染不共面的多边形是极其没有效率的,一般都是用多个三角形来组成复杂的几何形体。

上图是一个立方体,它的每一个面都是由两个三角形构成。可以通过在几何体的表面上添加材质和纹理来使之看起来更真实。

相关文档
最新文档