D3D程序设计的最终目的是把场景中的3D物体显示到计算机显示器屏幕上,为实现这个目的,要经历三个阶段:
1.3D物体建模。
一个3D物体一般包括若干曲面,任意曲面都可以由若干三角形面片组成,一个三角形由三个顶点确定。3D物体模型是用顶点定义的物体,在3D物体建模阶段要定义3D物体的所有顶点位置和属性。这步对于固定功能流水线和可编程流水线是一致的。
2.顶点处理。
把世界坐标系中的3D模型的所有顶点经过世界变换、观察变换、投影变换转换为计算机显示器窗口坐标上的顶点。这些顶点除具有位置信息以外,根据设定的光源和材质,顶点还有颜色属性。在固定功能流水线中,在顶点处理前,程序首先设定设备的世界变换、观察变换、投影变换矩阵及光源和材质。设备使用预先设定的这些参数,采用内置的固定算法对每一个顶点逐一进行处理,在整个处理过程中设置的参数不改变。这就是固定功能流水线名称的由来。
在可编程流水线中,首先使用HLSL编写顶点着色方法,在方法中指定世界变换、观察变换、投影变换矩阵及光照和材质,顶点着色方法采用自定义顶点处理算法。显卡的GPU调用HLSL编写的顶点着色方法在显卡中运行,对每一个顶点进行处理。由于不同顶点着色实现不同算法,所以产生的效果可能完全不同,即使同一顶点着色方法,也可以通过改变方法参数产生不同的效果。编程人员可以编写多个顶点着色方法,根据需要在顶点处理中,对不同顶点采用不同的处理方法。使用可编程流水线的顶点处理,可以使编程人员更加接近系统硬件层,编写更加高效的代码,实现许多固定功能流水线不能实现的功能。
这一步在可编程流水线中称作顶点着色。
3.像素处理
计算机显示器屏幕是由像素点组成的,例如,一个1024X768的真彩色显示器一个1024x768个点,每个点有224种颜色。像素处理的目的就是把已经被处理的顶点变换为屏幕每个点的颜色。例如,一个三角形平面有三个顶点,具有指定的颜色,要根据三个顶点的颜色,采用一定的算法填充整个三角形平面的颜色,如果三角形有纹理,三角形平面每点的颜色还要和纹理的颜色进行混合,最终控制计算机显示器屏幕每点的颜色。
固定功能流水线的像素处理能力很弱,一般只能采用高洛得着色技术根据顶点颜色填充整个平面的颜色。每点颜色和纹理的颜色进行混合的设置相对复杂,且效果有限。可编程流水线极大地加强了像素处理能力,可以自定义根据顶点颜色填充整个平面颜色的方法及纹理混合方法,显卡的GPU调用这些方法在显卡中运行。这些方法使用上更加简单、高效,能够实现非常复杂的特殊效果。这一步在可编程流水线中称作像素着色。
http://blog.sina.com.cn/s/blog_6cccb1630100m24r.html
DirectX一直是微软重点发展的技术,目前最新版本为DirectX 11。以前,DirectX编程一直是VC的天下,但随着.net平台的深入发展,微软于2005年在DirectX 9.0c这个版本上开发一套正对.net平台的Managed API,即Direct 9.0 for Managed Code 1.0(简称Managed DirectX)。一年多时间后,微软终止了Managed DirectX,进而开展了新的计划——XNA,所以有人称XNA为Managed DirectX 2.0。当然微软在XNA上不遗余力,目前XNA的最新版本为3.1。Managed DirectX 1.0让.net程序员可以使用C#、VB.net来编写DirectX的应用,而XNA让.net程序员可以使用.net支持的语言方便的开发出很酷的多媒体程序,当然“游戏”的开发首当其重。