首先,先回顾一下DX9 SDK的历史。从编译链接的角度来,DX9 SDK可以分为前后两个时期:早期需要链接静态D3DX9库文件,而从2005 February发布的DX9 SDK Update开始则正式改为链接动态库,也就是从这个版本开始,编译出来的程序开始依赖D3DX9_XX.dll了。
如果使用DX9SDK(如DX9.0A)时候使用:
#pragma comment(lib, “d3dx9”)
在这个版本中d3dx9.lib是一个静态库,其大小为4281KB,那么编译出来的的模块尺寸都非常大。然而这样做的好处是即使在干净系统的机器上,程序也可以正常运行,完全不需要再添加其他D3DX9_XX.dll或者要求用户安装DX9 Runtime Library。
而如果我们能采用 2005 February以后发行的DX9 SDK,那么模块就会变成链接d3dx9_xx.dll(此时的d3dx9.lib只是一个DLL的函数导出库),其尺寸就会大大减少,但是会依赖 D3DX9_XX.dll了,其中XX数值由我们使用的SDK版本(发布时间)决定。例如,使用2007 August的SDK编译出来的模块就会依赖D3DX9_35.dll,其大小为3.55M。
下面,我列举出到目前为止微软的DX9 SDK对应的D3DX9_XX.dll以及该版本上与编译相关的更新:
D3DX SDK
|
安装的D3DX9 DLL
|
尺寸
|
备注
|
Before February 2005
|
无,静态库
|
--
|
在 2005 February之前DX SDK中使用静态库方式编译
|
February 2005 Update
|
d3dx9_24.dll
|
2.11M
|
第一次使用D3DX9链接动态库方式,即d3dx9_XX.dll中的XX的最小数值为24
从这个版本开始不再支持Windows 2000平台上DirectX的开发
|
April 2005 Update
|
d3dx9_25.dll
|
2.22M
|
独立出由于开发DX应用程序的UI框架(DXUT)
|
June 2005 Update
|
d3dx9_26.dll
|
2.19M
|
首次提供了用于VS.NET 2005开发的Sample Project
|
August 2005 Update
|
d3dx9_27.dll
|
2.21M
|
可以使用DX Viewer工具查看模型文件(*.x)
|
October 2005 Update
|
没有与D3DX9 DLL相关的变化
|
--
|
提升了对VC 2005的支持
|
December 2005 Update
|
d3dx9_28.dll
|
2.21M
|
DirectX 10技术预览
|
February 2006 Update
|
d3dx9_29.dll
|
2.22M
|
--
|
April 2006 Update
|
d3dx9_30.dll
|
2.27M
|
添加了DirectX 10 Sample
|
June 2006 Update
|
没有与D3DX9 DLL相关的变化
|
--
|
更新了DirectX 10技术预览
|
August 2006 Update
|
没有与D3DX9 DLL相关的变化
|
--
|
--
|
October 2006 Update
|
d3dx9_31.dll
|
2.30M
|
为Direct3D 9提供了新的HLSL Shader编译器
|
December 2006 Update
|
d3dx9_32.dll
|
3.26M
|
提供了DirectX 10第一次官方发布版本
扩展了D3DX函数功能(Direct3D9Ex)
不再支持Windows 95/98/SE/ME
不再支持Shader Model 1
|
February 2007 Update
|
没有与D3DX9 DLL相关的变化
|
--
|
为Direct3D9Ex提供了文档(Direct3D9Ex is a new version of Direct3D 9 for Vista and can actually be found in the Vista Platform SDK)
|
April 2007 Update
|
d3dx9_33.dll
|
3.33M
|
更新了Shader编译器(不再支持Shader 1.x)
|
June 2007 Update
|
d3dx9_34.dll
|
3.33M
|
可用Vista Direct3D9Ex APIs了
|
August 2007 Update
|
d3dx9_35.dll
|
3.55M
|
微软在此版本声称,以后发布DX SDK的速度将会是一年4次,而不是像以前一样,每两个月发布一次。
首次引入DirectX 10.1概念
|
November 2007 Update
|
d3dx9_36.dll
|
3.56M
|
声称下一个版本的SDK(March 2008)中将会支持VS 2008,而不再支持VS 2003
|
March 2008 Update
|
d3dx9_37.dll
|
3.61M
|
DirectX 10.1 RTM
正式放弃支持VS 2003
正式加入对VS 2008的支持
|
June 2008 Update
|
d3dx9_38.dll
|
3.67M
|
HLSL编译器被改变,可能会影响使用之前的SDK开发的代码
|
August 2008 Update
|
d3dx9_39.dll
|
3.67M
|
--
|
November 2008 Update
|
d3dx9_40.dll
|
4.17M
|
DirectX 11技术预览
|
March 2009 Update
|
d3dx9_41.dll
|
未验证
|
Direct2D技术预览
DirectWrite (text rendering) and DXGI (DirectX Graphics Infrastructure)预览
|
注:截至此文章发布之时,MS公布了August 2009 Update,此表会持续更新中...