Direct3DX

来源:互联网 发布:博客怎么做网络推广 编辑:程序博客网 时间:2024/05/11 00:17

DirectX 7

1.

DirectX 8



DirectX 9



DirectX 9 Ex



DirectX 10
DirectX 7.0

新增的内容:

一、 Direct3D 立即模式 API 增加了新特性,包括 : 设备状态块, 几何混合,立方体环境映射 , 用户自定义裁剪面。

二、

API 组成

第一、 Direct3D 快速模式

Direct3DX 实用库

D3D 立即模式的体系结构




在了解时,主要了解 Direct3D Immediate Mode C/C++ Reference

以接口为中心 :

接口 : IDirect3D7

IDirect3DDevice7

IDirect3DVertexBuffer7

D3DX 实用库是十分重要的库,使用此库可以便利开发。

D3DX 使用库的功能

利用 D3DX 封装 D3D 渲染器,利用 OpenGL API 封装渲染器,渲染器的设计使用统一的接口产生不同的实现版本,

而且可拆卸,即可利用另一个架构的渲染器完全替换掉此渲染器。渲染器 API 可以自由从 D3D 和 OpnGL 之间切换。

Direct3D Utility Library

下图是 Direct3D Utility Library 位于 Direct3D API 库的位置。




ID3DXContext ——根接口,用于状态配置,纹理创建,显示更新

ID3DXMatrixStack ——实现场景层次的辅助接口

ID3DXSimpleShape ——用于绘制图元的 vertex-buffer 接口

Encapsulates ——封装

Direct3DX Utility Library 本质

主要用于创建对象,封装对象,操作对象。

主要包括下面几大类的 D3DX API

第一、 Direct3DX 和 Direct3D

第二、 Direct3DX Context

第三、 Direct3DX Devices

第四、 Direct3DX Matrix Stack

第五、 Hardware Acceleration Levels(HAL)

第六、 Sprite Support

第七、 Texturing Support

第八、 Simple Geometric Shapes

第九、 3-D Math Support
D3DX API 分类
用途
备注
代表函数


Direct3DX 和 Direct3D
第一、初始化 context object, 更方便的初始化 Direct3D 和 DirectDraw

第二、访问 Direct3D 和 DirectDraw 对象
获取 IDirect3DDevice7 接口

获取 IDirect3D7 接口

获取 IDirectDraw7 接口
D3DXCreateContextEx()

g_pd3dx->GetD3DDevice()




Direct3DX Context
封装了所有各种 Direct3D 和 DirectDraw 对象




Direct3DX Devices
扩展了 Direct3D device

可直接获取设备数量

查询 Direct3DX 设备

D3DXGetCurrentVideoMode

D3DXGetMaxNumVideoModes

D3DXGetVideoMode


Direct3DX Matrix Stack
记录矩阵状态




Hardware Acceleration Levels(HAL)
硬件加速

ID3DXContext::GetDeviceIndex

D3DXGetDeviceDescription


Sprite Support
辅助 Sprite 的 API, 用于 3D 图形实现 2D sprite

D3DXPrepareDeviceForSprite

D3DXDrawSpriteSimple


Texturing Support
纹理辅助函数

转换纹理格式

创建 cube-map 纹理

创建和加载纹理文件

创建纹理

生成 mipmap 纹理

过滤

从表面加载纹理

D3DXCreateTexture

D3DXCreateTextureFromFile

D3DXLoadTextureFromSurface




Simple Geometric Shapes
用于创建简单的几何形状

立方体

圆柱体 / 圆锥体

圆环

N 边多边形

球体

茶壶

ID3DXSimpleShape


3-D Math Support
提供了详细的数学函数支持









Direct3DX Utility Library Reference



具例

接口
ID3DXContext

ID3DXMatrixStack

ID3DXSimpleShape



函数
一般目的函数
用于执行许多一般的任务,如查询设备,视频模式,表面格式,设置和关闭 Direct3DX, 创建 contexts 和产生表面,像素格式
D3DXCreateContext

D3DXGetDeviceCount

D3DXInitialize




数学函数
2D 3D 数学计算
D3DXColorAdd

D3DXColorModulate

D3DXCreateMatrixStack

D3DXQuaternionIdentity

D3DXVec2Add

D3DXVec2Normalize

D3DXVec3Cross

D3DXMatrixInverse

D3DXVec4Add


形状绘制函数

D3DXCreateBox

D3DXCreateCylinder

D3DXCreatePolygon


精灵辅助函数

D3DXBuildSpriteTransform

D3DXDrawSprite3D


纹理函数

D3DXCreateCubeMapTexutre




D3DXToDegree

D3DXToRadian

结构体


D3DXCOLOR

D3DXMATRIX

D3DXPLANE

D3DXVECTOR2

D3DXVECTOR3

D3DXVECTOR4

C++ 特定扩展


D3DXCOLOR EX

D3DXMATRIX EX

D3DXPLANE EX

D3DXVECTOR2 EX

D3DXVECTOR3 EX

D3DXVECTOR4 EX

错误返回值

用于判断 D3D 的错误







可以在 D3DX 库的基础上再封装






D3DX 提供给开发者的东西太好了。



第二、 Direct3D 保留模式

数学函数是可以移植的

world-class 世界级

DirectX 7 的流水线



DirectX 8

新增

第一、 Pixel shader 1.2 1.3 1.4

第二、 D3DX 实用库函数用于 meshes, textures, 凹凸映射,纹理和四元组

D3DXComputeTangent

D3DXComputeNormalMap

Effect 框架 ID3DXEffect

纹理库

D3DXGetImageInformation 获取图像信息

D3DXSaveSurfaceToFile 保存位图 24bit RGB .dds

纹理填充函数

D3DXFillTexture D3DXFillCubeTexture D3DXFillVolumeTexture

Mesh 库

D3DXQuaternionSquadSetup

D3DXQuaternionSquad

各线异性的支持

点精灵的支持

3D 体文理支持

LOD 几何的支持

索引顶点混合



第三、合并 DirectDraw 和 Direct3D



流水线变为




DirectX 8 主要是增加了可编程管线



DirectX9.0 Summer 2003

DirectX9.0 2004

DirectX9.0 2005

DirectX9.0 2006

DirectX9.0 2007

DirectX9.0 2008

DirectX9.0 2009



DirectX 8 的 Direct3D 的接口

IDirect3D8

IDirect3DBaseTexture8

IDirect3DCubeTexture

IDirect3DDevice8

IDirect3DIndexBuffer8

IDirect3DResource8

IDirect3DSurface8

IDirect3DSwapChain8

IDirect3DTexture8

IDirect3DVertexBuffer8

IDirect3DVolumn8

IDirect3DVolumnTexture8

这些接口都是低级 3D API 接口,可在此基础上进行二次封装,或直接使用 D3DX 实用库,并再次封装 D3DX 实用库。



Direct3DX C/C++ Reference 这是非常不错的图形函数库要比低级 API 高层一些,但它的基础就是 low-level API


用途
具例



接口


ID3DXBaseMesh

ID3DXEffect

ID3DXMesh

ID3DXPMesh

ID3DXSkinMesh



函数
效果函数
编译、加载可编程着色器文件等
D3DXCreateEffect

D3DXCreateEffectFromFile

D3DXCreateEffectFromResource




数学函数

D3DXColorAdd

D3DXPlaneDotCoord

D3DXPlaneNormalize




网格函数

D3DXBoxBoundProbe

D3DXComputeBoundingBox

D3DXComputeBoundingSphere

D3DXComputeNormals

D3DXComputeTangent

D3DXIntersect




Misc 函数

D3DXCreateFont






着色函数

D3DXAssembleShader




形状绘制函数

D3DXCreateBox

D3DXCreateCylinder

D3DXCreateText

D3DXCreateTeapot




纹理函数

D3DXComputeNormalMap

D3DXCreateCubeTexture

D3DXCreateTexture

D3DXCreateVolumeTexture

D3DXLoadSurfaceFromFile

D3DXSaveSurfaceToFile






数学函数可能是可复用度最高的,而其他函数也非常高。比如纹理函数,基于这些纹理函数,可以创建很多实用的工具。

Direct3D 8 的 Mesh 函数非常丰富,这十分强大。



虽然 Direct3D 8 提供了大量的 D3DX 友好函数,但是离具体的游戏逻辑还是十分遥远。

所以选择合适的引擎更接近于游戏逻辑,但结合引擎和 D3D 8 9 的 API ,并利用条件编译

这可以让你的工作更便捷。 Direct3D 8 使用的主要是汇编级的着色器。

Direct3D 9 则使用了 HLSL 。

如果你能利用 BSP Octree Quadtree Portal K-D tree 来构造场景管理器,并利用一些辅助引擎,以及 D3DX 来制造渲染器,

那么这种试验是很适合正在学习中的 Fans 的。 DirectX 8 的纹理函数十分膨胀,这为你创建更强大工具提供了很好的支撑。

X File C/C++ 参考

IDirectXFile

IDirectXFileBinary

IDirectXFileSaveObject

DirectXFileCreate


DirectX 9.0

DirectX 9.0a

DirectX 9.0b

DirectX 9.0c

增加的功能

第一、 HLSL 流程控制

第二、 预计算 Radiance Transfer(PRT)

第三、 Tone Mapping 用于 HDR Lighting

第四、 动画方面的更新

ID3DXAnimationCallbackHandler

ID3DXAnimationController

DirectX 9.0 的历史将更长

DirectX 9.0 的流水线




这个流水线和 8.0 的变化不大

Direct3D 9 的 D3DX 库


用途
举例


接口


ID3DXAllocateHierarchy

ID3DXAnimationCallbackHandler

ID3DXAnimationController

ID3DXBuffer

ID3DXEffect


函数
动画函数

D3DXCreateAnimationController

D3DXCreateKeyframedAnimationSet

D3DXFrameFind

D3DXLoadMeshHierarchyFromX



数学函数

D3DXColorAdd

D3DXColorLerp

D3DXMatrixReflect

D3DXVec3Lerp

D3DXVec3Scale

D3DXVec4Lerp



网格函数

D3DXComputeBoundingBox

D3DXComputeBoundingSphere

D3DXIntersectSubset



一般函数

D3DXCreateBuffer

D3DXCreateSprite



着色器函数

D3DXAssembleShader

D3DXCompileShader

D3DXCompileShaderFromFile

D3DXGetShaderVersion



形状绘制函数

D3DXCreateBox

D3DXCreateTeapot



纹理函数

D3DXComputeNormalMap

D3DXCreateCubeTexture

D3DXCreateTexture

D3DXCreateVolumeTexture

D3DXFillCubeTexture

D3DXSaveSurfaceToFile



PRT 函数

D3DXSHPRTCompExtractBasis

D3DXSHPRTCompExtractClusterIDs

D3DXSHPRTCompExtractTexture





DirectX 8 9 SDK 的 D3DX 的函数都十分不错。

但总体来说这些函数的使用要看针对的是什么计算任务,要合理的使用,而不要一味的滥用。

DirectX 9.0 提供的特性只是游戏需要的一部分,它的最直接的用途,就是对图元绘制,渲染,着色,特效的支撑,除此之外的

绝大部分功能都需要其他部分来支撑,比如物理, AI ,系统等方面,所以合理的使用一个不错的成熟的引擎,是更好的选择。



关于 D3DX 内的纹理、数学等函数使用起来还是很不错的。由于数学的抽象性,所以数学函数的持久性更长,

它就像 C++ Perl Python 这类语言一样,像 Unix 的管道、重定向等机制一样可以源远流长。

所以合理的利用现有的函数,可以提高你的效率。



对于类库建立着,学习 DirectX 的方式,建立自己稳固的,可复用高的 API 层,并在此基础上构件类库更符合持久性。


DirectX 9 Ex

Direct3D 9Ex 是 Windows Vista 下的 Direct3D 9 增强版本

图形管线




我们发现图形管线增加了 Geometry Processing

D3DX 库

D3DX Reference
分类
子类
用途
举例

接口


ID3DXAnimationController

ID3DXBuffer

ID3DXEffect

ID3DXPRTBuffer

函数
动画函数

D3DXCreateAnimationController

D3DXFRAMEFind


一般函数

D3DXCreateFont

D3DXCreateBuffer

D3DXCreateRenderToSurface


数学函数

D3DXColorAdd

D3DXColorLerp

D3DSHAdd

D3DSHDot


网格函数

D3DXComputeBoundingBox


预 RadianceTransfer(PRT) 函数

D3DXCreatePRTBuffer


着色函数

D3DXCompileShader

D3DXPreprocessShader


形状绘制函数

D3DXCreateBox

D3DXCreateCylinder


纹理函数

D3DXCreateTexture

D3DXFillCubeTexture


UVAtlas 函数

D3DXUVAtlasCreate

D3DXComputeIMTFromPerVertexSignal









DirectX 10

DirectX 10 内设置了 XACT XAudio2 XInput ,用来取代 DirectAudio 和 DirectInput





图形管线




D3DX 库
分类
举例
举例

接口
ID3DX10DataLoader

ID3DX10Font

ID3DX10Mesh


函数
一般函数
D3DX10CreateFont

D3DX10CompileFromFile


数学函数
D3DXColorAdjustContrast

D3DXMatrixInverse

D3DXMatrixReflect


网格函数
D3DX10CreateMesh

D3DXBoxBoundProbe


纹理函数
D3DX10ComputeNormalMap

D3DX10FilterTexture








综述 : DirectX 是一套低级 API, 虽然有大量的纹理和数学,网格的实用函数,但是如果您的目的是快速的开发,那么直接使用 DirectX 来进行开发并不是明智之举。

哪怕是直接使用一个特性不那么多的二次封装引擎,您的效率也是显而易见的。除非您正在利用 DirectX 封装图形渲染器,或制造一个商业游戏引擎,那就另当别论了。

如果您只是期望制造一个游戏,商用目的或想尽快制造一个游戏,期望直接进入游戏编程和游戏设计主题,那么开源界有很多好用的游戏引擎在等着您。比如 Ogre Nebula 等等,

那是一片海洋,选择什么样的利刃全在于你。DirectX 7

1.

DirectX 8



DirectX 9



DirectX 9 Ex



DirectX 10
DirectX 7.0

新增的内容:

一、 Direct3D 立即模式 API 增加了新特性,包括 : 设备状态块, 几何混合,立方体环境映射 , 用户自定义裁剪面。

二、

API 组成

第一、 Direct3D 快速模式

Direct3DX 实用库

D3D 立即模式的体系结构




在了解时,主要了解 Direct3D Immediate Mode C/C++ Reference

以接口为中心 :

接口 : IDirect3D7

IDirect3DDevice7

IDirect3DVertexBuffer7

D3DX 实用库是十分重要的库,使用此库可以便利开发。

D3DX 使用库的功能

利用 D3DX 封装 D3D 渲染器,利用 OpenGL API 封装渲染器,渲染器的设计使用统一的接口产生不同的实现版本,

而且可拆卸,即可利用另一个架构的渲染器完全替换掉此渲染器。渲染器 API 可以自由从 D3D 和 OpnGL 之间切换。

Direct3D Utility Library

下图是 Direct3D Utility Library 位于 Direct3D API 库的位置。




ID3DXContext ——根接口,用于状态配置,纹理创建,显示更新

ID3DXMatrixStack ——实现场景层次的辅助接口

ID3DXSimpleShape ——用于绘制图元的 vertex-buffer 接口

Encapsulates ——封装

Direct3DX Utility Library 本质

主要用于创建对象,封装对象,操作对象。

主要包括下面几大类的 D3DX API

第一、 Direct3DX 和 Direct3D

第二、 Direct3DX Context

第三、 Direct3DX Devices

第四、 Direct3DX Matrix Stack

第五、 Hardware Acceleration Levels(HAL)

第六、 Sprite Support

第七、 Texturing Support

第八、 Simple Geometric Shapes

第九、 3-D Math Support
D3DX API 分类
用途
备注
代表函数


Direct3DX 和 Direct3D
第一、初始化 context object, 更方便的初始化 Direct3D 和 DirectDraw

第二、访问 Direct3D 和 DirectDraw 对象
获取 IDirect3DDevice7 接口

获取 IDirect3D7 接口

获取 IDirectDraw7 接口
D3DXCreateContextEx()

g_pd3dx->GetD3DDevice()




Direct3DX Context
封装了所有各种 Direct3D 和 DirectDraw 对象




Direct3DX Devices
扩展了 Direct3D device

可直接获取设备数量

查询 Direct3DX 设备

D3DXGetCurrentVideoMode

D3DXGetMaxNumVideoModes

D3DXGetVideoMode


Direct3DX Matrix Stack
记录矩阵状态




Hardware Acceleration Levels(HAL)
硬件加速

ID3DXContext::GetDeviceIndex

D3DXGetDeviceDescription


Sprite Support
辅助 Sprite 的 API, 用于 3D 图形实现 2D sprite

D3DXPrepareDeviceForSprite

D3DXDrawSpriteSimple


Texturing Support
纹理辅助函数

转换纹理格式

创建 cube-map 纹理

创建和加载纹理文件

创建纹理

生成 mipmap 纹理

过滤

从表面加载纹理

D3DXCreateTexture

D3DXCreateTextureFromFile

D3DXLoadTextureFromSurface




Simple Geometric Shapes
用于创建简单的几何形状

立方体

圆柱体 / 圆锥体

圆环

N 边多边形

球体

茶壶

ID3DXSimpleShape


3-D Math Support
提供了详细的数学函数支持









Direct3DX Utility Library Reference



具例

接口
ID3DXContext

ID3DXMatrixStack

ID3DXSimpleShape



函数
一般目的函数
用于执行许多一般的任务,如查询设备,视频模式,表面格式,设置和关闭 Direct3DX, 创建 contexts 和产生表面,像素格式
D3DXCreateContext

D3DXGetDeviceCount

D3DXInitialize




数学函数
2D 3D 数学计算
D3DXColorAdd

D3DXColorModulate

D3DXCreateMatrixStack

D3DXQuaternionIdentity

D3DXVec2Add

D3DXVec2Normalize

D3DXVec3Cross

D3DXMatrixInverse

D3DXVec4Add


形状绘制函数

D3DXCreateBox

D3DXCreateCylinder

D3DXCreatePolygon


精灵辅助函数

D3DXBuildSpriteTransform

D3DXDrawSprite3D


纹理函数

D3DXCreateCubeMapTexutre




D3DXToDegree

D3DXToRadian

结构体


D3DXCOLOR

D3DXMATRIX

D3DXPLANE

D3DXVECTOR2

D3DXVECTOR3

D3DXVECTOR4

C++ 特定扩展


D3DXCOLOR EX

D3DXMATRIX EX

D3DXPLANE EX

D3DXVECTOR2 EX

D3DXVECTOR3 EX

D3DXVECTOR4 EX

错误返回值

用于判断 D3D 的错误







可以在 D3DX 库的基础上再封装






D3DX 提供给开发者的东西太好了。



第二、 Direct3D 保留模式

数学函数是可以移植的

world-class 世界级

DirectX 7 的流水线



DirectX 8

新增

第一、 Pixel shader 1.2 1.3 1.4

第二、 D3DX 实用库函数用于 meshes, textures, 凹凸映射,纹理和四元组

D3DXComputeTangent

D3DXComputeNormalMap

Effect 框架 ID3DXEffect

纹理库

D3DXGetImageInformation 获取图像信息

D3DXSaveSurfaceToFile 保存位图 24bit RGB .dds

纹理填充函数

D3DXFillTexture D3DXFillCubeTexture D3DXFillVolumeTexture

Mesh 库

D3DXQuaternionSquadSetup

D3DXQuaternionSquad

各线异性的支持

点精灵的支持

3D 体文理支持

LOD 几何的支持

索引顶点混合



第三、合并 DirectDraw 和 Direct3D



流水线变为




DirectX 8 主要是增加了可编程管线



DirectX9.0 Summer 2003

DirectX9.0 2004

DirectX9.0 2005

DirectX9.0 2006

DirectX9.0 2007

DirectX9.0 2008

DirectX9.0 2009



DirectX 8 的 Direct3D 的接口

IDirect3D8

IDirect3DBaseTexture8

IDirect3DCubeTexture

IDirect3DDevice8

IDirect3DIndexBuffer8

IDirect3DResource8

IDirect3DSurface8

IDirect3DSwapChain8

IDirect3DTexture8

IDirect3DVertexBuffer8

IDirect3DVolumn8

IDirect3DVolumnTexture8

这些接口都是低级 3D API 接口,可在此基础上进行二次封装,或直接使用 D3DX 实用库,并再次封装 D3DX 实用库。



Direct3DX C/C++ Reference 这是非常不错的图形函数库要比低级 API 高层一些,但它的基础就是 low-level API


用途
具例



接口


ID3DXBaseMesh

ID3DXEffect

ID3DXMesh

ID3DXPMesh

ID3DXSkinMesh



函数
效果函数
编译、加载可编程着色器文件等
D3DXCreateEffect

D3DXCreateEffectFromFile

D3DXCreateEffectFromResource




数学函数

D3DXColorAdd

D3DXPlaneDotCoord

D3DXPlaneNormalize




网格函数

D3DXBoxBoundProbe

D3DXComputeBoundingBox

D3DXComputeBoundingSphere

D3DXComputeNormals

D3DXComputeTangent

D3DXIntersect




Misc 函数

D3DXCreateFont






着色函数

D3DXAssembleShader




形状绘制函数

D3DXCreateBox

D3DXCreateCylinder

D3DXCreateText

D3DXCreateTeapot




纹理函数

D3DXComputeNormalMap

D3DXCreateCubeTexture

D3DXCreateTexture

D3DXCreateVolumeTexture

D3DXLoadSurfaceFromFile

D3DXSaveSurfaceToFile






数学函数可能是可复用度最高的,而其他函数也非常高。比如纹理函数,基于这些纹理函数,可以创建很多实用的工具。

Direct3D 8 的 Mesh 函数非常丰富,这十分强大。



虽然 Direct3D 8 提供了大量的 D3DX 友好函数,但是离具体的游戏逻辑还是十分遥远。

所以选择合适的引擎更接近于游戏逻辑,但结合引擎和 D3D 8 9 的 API ,并利用条件编译

这可以让你的工作更便捷。 Direct3D 8 使用的主要是汇编级的着色器。

Direct3D 9 则使用了 HLSL 。

如果你能利用 BSP Octree Quadtree Portal K-D tree 来构造场景管理器,并利用一些辅助引擎,以及 D3DX 来制造渲染器,

那么这种试验是很适合正在学习中的 Fans 的。 DirectX 8 的纹理函数十分膨胀,这为你创建更强大工具提供了很好的支撑。

X File C/C++ 参考

IDirectXFile

IDirectXFileBinary

IDirectXFileSaveObject

DirectXFileCreate


DirectX 9.0

DirectX 9.0a

DirectX 9.0b

DirectX 9.0c

增加的功能

第一、 HLSL 流程控制

第二、 预计算 Radiance Transfer(PRT)

第三、 Tone Mapping 用于 HDR Lighting

第四、 动画方面的更新

ID3DXAnimationCallbackHandler

ID3DXAnimationController

DirectX 9.0 的历史将更长

DirectX 9.0 的流水线




这个流水线和 8.0 的变化不大

Direct3D 9 的 D3DX 库


用途
举例


接口


ID3DXAllocateHierarchy

ID3DXAnimationCallbackHandler

ID3DXAnimationController

ID3DXBuffer

ID3DXEffect


函数
动画函数

D3DXCreateAnimationController

D3DXCreateKeyframedAnimationSet

D3DXFrameFind

D3DXLoadMeshHierarchyFromX



数学函数

D3DXColorAdd

D3DXColorLerp

D3DXMatrixReflect

D3DXVec3Lerp

D3DXVec3Scale

D3DXVec4Lerp



网格函数

D3DXComputeBoundingBox

D3DXComputeBoundingSphere

D3DXIntersectSubset



一般函数

D3DXCreateBuffer

D3DXCreateSprite



着色器函数

D3DXAssembleShader

D3DXCompileShader

D3DXCompileShaderFromFile

D3DXGetShaderVersion



形状绘制函数

D3DXCreateBox

D3DXCreateTeapot



纹理函数

D3DXComputeNormalMap

D3DXCreateCubeTexture

D3DXCreateTexture

D3DXCreateVolumeTexture

D3DXFillCubeTexture

D3DXSaveSurfaceToFile



PRT 函数

D3DXSHPRTCompExtractBasis

D3DXSHPRTCompExtractClusterIDs

D3DXSHPRTCompExtractTexture





DirectX 8 9 SDK 的 D3DX 的函数都十分不错。

但总体来说这些函数的使用要看针对的是什么计算任务,要合理的使用,而不要一味的滥用。

DirectX 9.0 提供的特性只是游戏需要的一部分,它的最直接的用途,就是对图元绘制,渲染,着色,特效的支撑,除此之外的

绝大部分功能都需要其他部分来支撑,比如物理, AI ,系统等方面,所以合理的使用一个不错的成熟的引擎,是更好的选择。



关于 D3DX 内的纹理、数学等函数使用起来还是很不错的。由于数学的抽象性,所以数学函数的持久性更长,

它就像 C++ Perl Python 这类语言一样,像 Unix 的管道、重定向等机制一样可以源远流长。

所以合理的利用现有的函数,可以提高你的效率。



对于类库建立着,学习 DirectX 的方式,建立自己稳固的,可复用高的 API 层,并在此基础上构件类库更符合持久性。


DirectX 9 Ex

Direct3D 9Ex 是 Windows Vista 下的 Direct3D 9 增强版本

图形管线




我们发现图形管线增加了 Geometry Processing

D3DX 库

D3DX Reference
分类
子类
用途
举例

接口


ID3DXAnimationController

ID3DXBuffer

ID3DXEffect

ID3DXPRTBuffer

函数
动画函数

D3DXCreateAnimationController

D3DXFRAMEFind


一般函数

D3DXCreateFont

D3DXCreateBuffer

D3DXCreateRenderToSurface


数学函数

D3DXColorAdd

D3DXColorLerp

D3DSHAdd

D3DSHDot


网格函数

D3DXComputeBoundingBox


预 RadianceTransfer(PRT) 函数

D3DXCreatePRTBuffer


着色函数

D3DXCompileShader

D3DXPreprocessShader


形状绘制函数

D3DXCreateBox

D3DXCreateCylinder


纹理函数

D3DXCreateTexture

D3DXFillCubeTexture


UVAtlas 函数

D3DXUVAtlasCreate

D3DXComputeIMTFromPerVertexSignal









DirectX 10

DirectX 10 内设置了 XACT XAudio2 XInput ,用来取代 DirectAudio 和 DirectInput





图形管线




D3DX 库
分类
举例
举例

接口
ID3DX10DataLoader

ID3DX10Font

ID3DX10Mesh


函数
一般函数
D3DX10CreateFont

D3DX10CompileFromFile


数学函数
D3DXColorAdjustContrast

D3DXMatrixInverse

D3DXMatrixReflect


网格函数
D3DX10CreateMesh

D3DXBoxBoundProbe


纹理函数
D3DX10ComputeNormalMap

D3DX10FilterTexture








综述 : DirectX 是一套低级 API, 虽然有大量的纹理和数学,网格的实用函数,但是如果您的目的是快速的开发,那么直接使用 DirectX 来进行开发并不是明智之举。

哪怕是直接使用一个特性不那么多的二次封装引擎,您的效率也是显而易见的。除非您正在利用 DirectX 封装图形渲染器,或制造一个商业游戏引擎,那就另当别论了。

如果您只是期望制造一个游戏,商用目的或想尽快制造一个游戏,期望直接进入游戏编程和游戏设计主题,那么开源界有很多好用的游戏引擎在等着您。比如 Ogre Nebula 等等,

那是一片海洋,选择什么样的利刃全在于你。

原创粉丝点击