Direct3DX
DirectX 7
1.
DirectX 8
DirectX 9
DirectX 9 Ex
DirectX 10
DirectX 7.0
新增的內(nèi)容:
一、 Direct3D 立即模式 API 增加了新特性,包括 : 設(shè)備狀態(tài)塊, 幾何混合,立方體環(huán)境映射 , 用戶自定義裁剪面。
二、
API 組成
第一、 Direct3D 快速模式
Direct3DX 實(shí)用庫
D3D 立即模式的體系結(jié)構(gòu)
在了解時(shí),主要了解 Direct3D Immediate Mode C/C++ Reference
以接口為中心 :
接口 : IDirect3D7
IDirect3DDevice7
IDirect3DVertexBuffer7
D3DX 實(shí)用庫是十分重要的庫,使用此庫可以便利開發(fā)。
D3DX 使用庫的功能
利用 D3DX 封裝 D3D 渲染器,利用 OpenGL API 封裝渲染器,渲染器的設(shè)計(jì)使用統(tǒng)一的接口產(chǎn)生不同的實(shí)現(xiàn)版本,
而且可拆卸,即可利用另一個(gè)架構(gòu)的渲染器完全替換掉此渲染器。渲染器 API 可以自由從 D3D 和 OpnGL 之間切換。
Direct3D Utility Library
下圖是 Direct3D Utility Library 位于 Direct3D API 庫的位置。
ID3DXContext ——根接口,用于狀態(tài)配置,紋理創(chuàng)建,顯示更新
ID3DXMatrixStack ——實(shí)現(xiàn)場景層次的輔助接口
ID3DXSimpleShape ——用于繪制圖元的 vertex-buffer 接口
Encapsulates ——封裝
Direct3DX Utility Library 本質(zhì)
主要用于創(chuàng)建對象,封裝對象,操作對象。
主要包括下面幾大類的 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 分類
用途
備注
代表函數(shù)
Direct3DX 和 Direct3D
第一、初始化 context object, 更方便的初始化 Direct3D 和 DirectDraw
第二、訪問 Direct3D 和 DirectDraw 對象
獲取 IDirect3DDevice7 接口
獲取 IDirect3D7 接口
獲取 IDirectDraw7 接口
D3DXCreateContextEx()
g_pd3dx->GetD3DDevice()
Direct3DX Context
封裝了所有各種 Direct3D 和 DirectDraw 對象
Direct3DX Devices
擴(kuò)展了 Direct3D device
可直接獲取設(shè)備數(shù)量
查詢 Direct3DX 設(shè)備
D3DXGetCurrentVideoMode
D3DXGetMaxNumVideoModes
D3DXGetVideoMode
Direct3DX Matrix Stack
記錄矩陣狀態(tài)
Hardware Acceleration Levels(HAL)
硬件加速
ID3DXContext::GetDeviceIndex
D3DXGetDeviceDescription
Sprite Support
輔助 Sprite 的 API, 用于 3D 圖形實(shí)現(xiàn) 2D sprite
D3DXPrepareDeviceForSprite
D3DXDrawSpriteSimple
Texturing Support
紋理輔助函數(shù)
轉(zhuǎn)換紋理格式
創(chuàng)建 cube-map 紋理
創(chuàng)建和加載紋理文件
創(chuàng)建紋理
生成 mipmap 紋理
過濾
從表面加載紋理
D3DXCreateTexture
D3DXCreateTextureFromFile
D3DXLoadTextureFromSurface
Simple Geometric Shapes
用于創(chuàng)建簡單的幾何形狀
立方體
圓柱體 / 圓錐體
圓環(huán)
N 邊多邊形
球體
茶壺
ID3DXSimpleShape
3-D Math Support
提供了詳細(xì)的數(shù)學(xué)函數(shù)支持
Direct3DX Utility Library Reference
具例
接口
ID3DXContext
ID3DXMatrixStack
ID3DXSimpleShape
函數(shù)
一般目的函數(shù)
用于執(zhí)行許多一般的任務(wù),如查詢設(shè)備,視頻模式,表面格式,設(shè)置和關(guān)閉 Direct3DX, 創(chuàng)建 contexts 和產(chǎn)生表面,像素格式
D3DXCreateContext
D3DXGetDeviceCount
D3DXInitialize
數(shù)學(xué)函數(shù)
2D 3D 數(shù)學(xué)計(jì)算
D3DXColorAdd
D3DXColorModulate
D3DXCreateMatrixStack
D3DXQuaternionIdentity
D3DXVec2Add
D3DXVec2Normalize
D3DXVec3Cross
D3DXMatrixInverse
D3DXVec4Add
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateCylinder
D3DXCreatePolygon
精靈輔助函數(shù)
D3DXBuildSpriteTransform
D3DXDrawSprite3D
紋理函數(shù)
D3DXCreateCubeMapTexutre
宏
D3DXToDegree
D3DXToRadian
結(jié)構(gòu)體
D3DXCOLOR
D3DXMATRIX
D3DXPLANE
D3DXVECTOR2
D3DXVECTOR3
D3DXVECTOR4
C++ 特定擴(kuò)展
D3DXCOLOR EX
D3DXMATRIX EX
D3DXPLANE EX
D3DXVECTOR2 EX
D3DXVECTOR3 EX
D3DXVECTOR4 EX
錯(cuò)誤返回值
用于判斷 D3D 的錯(cuò)誤
可以在 D3DX 庫的基礎(chǔ)上再封裝
D3DX 提供給開發(fā)者的東西太好了。
第二、 Direct3D 保留模式
數(shù)學(xué)函數(shù)是可以移植的
world-class 世界級(jí)
DirectX 7 的流水線
DirectX 8
新增
第一、 Pixel shader 1.2 1.3 1.4
第二、 D3DX 實(shí)用庫函數(shù)用于 meshes, textures, 凹凸映射,紋理和四元組
D3DXComputeTangent
D3DXComputeNormalMap
Effect 框架 ID3DXEffect
紋理庫
D3DXGetImageInformation 獲取圖像信息
D3DXSaveSurfaceToFile 保存位圖 24bit RGB .dds
紋理填充函數(shù)
D3DXFillTexture D3DXFillCubeTexture D3DXFillVolumeTexture
Mesh 庫
D3DXQuaternionSquadSetup
D3DXQuaternionSquad
各線異性的支持
點(diǎn)精靈的支持
3D 體文理支持
LOD 幾何的支持
索引頂點(diǎn)混合
第三、合并 DirectDraw 和 Direct3D
流水線變?yōu)?
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
這些接口都是低級(jí) 3D API 接口,可在此基礎(chǔ)上進(jìn)行二次封裝,或直接使用 D3DX 實(shí)用庫,并再次封裝 D3DX 實(shí)用庫。
Direct3DX C/C++ Reference 這是非常不錯(cuò)的圖形函數(shù)庫要比低級(jí) API 高層一些,但它的基礎(chǔ)就是 low-level API
用途
具例
接口
ID3DXBaseMesh
ID3DXEffect
ID3DXMesh
ID3DXPMesh
ID3DXSkinMesh
函數(shù)
效果函數(shù)
編譯、加載可編程著色器文件等
D3DXCreateEffect
D3DXCreateEffectFromFile
D3DXCreateEffectFromResource
數(shù)學(xué)函數(shù)
D3DXColorAdd
D3DXPlaneDotCoord
D3DXPlaneNormalize
網(wǎng)格函數(shù)
D3DXBoxBoundProbe
D3DXComputeBoundingBox
D3DXComputeBoundingSphere
D3DXComputeNormals
D3DXComputeTangent
D3DXIntersect
Misc 函數(shù)
D3DXCreateFont
著色函數(shù)
D3DXAssembleShader
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateCylinder
D3DXCreateText
D3DXCreateTeapot
紋理函數(shù)
D3DXComputeNormalMap
D3DXCreateCubeTexture
D3DXCreateTexture
D3DXCreateVolumeTexture
D3DXLoadSurfaceFromFile
D3DXSaveSurfaceToFile
數(shù)學(xué)函數(shù)可能是可復(fù)用度最高的,而其他函數(shù)也非常高。比如紋理函數(shù),基于這些紋理函數(shù),可以創(chuàng)建很多實(shí)用的工具。
Direct3D 8 的 Mesh 函數(shù)非常豐富,這十分強(qiáng)大。
雖然 Direct3D 8 提供了大量的 D3DX 友好函數(shù),但是離具體的游戲邏輯還是十分遙遠(yuǎn)。
所以選擇合適的引擎更接近于游戲邏輯,但結(jié)合引擎和 D3D 8 9 的 API ,并利用條件編譯
這可以讓你的工作更便捷。 Direct3D 8 使用的主要是匯編級(jí)的著色器。
Direct3D 9 則使用了 HLSL 。
如果你能利用 BSP Octree Quadtree Portal K-D tree 來構(gòu)造場景管理器,并利用一些輔助引擎,以及 D3DX 來制造渲染器,
那么這種試驗(yàn)是很適合正在學(xué)習(xí)中的 Fans 的。 DirectX 8 的紋理函數(shù)十分膨脹,這為你創(chuàng)建更強(qiáng)大工具提供了很好的支撐。
X File C/C++ 參考
IDirectXFile
IDirectXFileBinary
IDirectXFileSaveObject
DirectXFileCreate
DirectX 9.0
DirectX 9.0a
DirectX 9.0b
DirectX 9.0c
增加的功能
第一、 HLSL 流程控制
第二、 預(yù)計(jì)算 Radiance Transfer(PRT)
第三、 Tone Mapping 用于 HDR Lighting
第四、 動(dòng)畫方面的更新
ID3DXAnimationCallbackHandler
ID3DXAnimationController
DirectX 9.0 的歷史將更長
DirectX 9.0 的流水線
這個(gè)流水線和 8.0 的變化不大
Direct3D 9 的 D3DX 庫
用途
舉例
接口
ID3DXAllocateHierarchy
ID3DXAnimationCallbackHandler
ID3DXAnimationController
ID3DXBuffer
ID3DXEffect
函數(shù)
動(dòng)畫函數(shù)
D3DXCreateAnimationController
D3DXCreateKeyframedAnimationSet
D3DXFrameFind
D3DXLoadMeshHierarchyFromX
數(shù)學(xué)函數(shù)
D3DXColorAdd
D3DXColorLerp
D3DXMatrixReflect
D3DXVec3Lerp
D3DXVec3Scale
D3DXVec4Lerp
網(wǎng)格函數(shù)
D3DXComputeBoundingBox
D3DXComputeBoundingSphere
D3DXIntersectSubset
一般函數(shù)
D3DXCreateBuffer
D3DXCreateSprite
著色器函數(shù)
D3DXAssembleShader
D3DXCompileShader
D3DXCompileShaderFromFile
D3DXGetShaderVersion
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateTeapot
紋理函數(shù)
D3DXComputeNormalMap
D3DXCreateCubeTexture
D3DXCreateTexture
D3DXCreateVolumeTexture
D3DXFillCubeTexture
D3DXSaveSurfaceToFile
PRT 函數(shù)
D3DXSHPRTCompExtractBasis
D3DXSHPRTCompExtractClusterIDs
D3DXSHPRTCompExtractTexture
DirectX 8 9 SDK 的 D3DX 的函數(shù)都十分不錯(cuò)。
但總體來說這些函數(shù)的使用要看針對的是什么計(jì)算任務(wù),要合理的使用,而不要一味的濫用。
DirectX 9.0 提供的特性只是游戲需要的一部分,它的最直接的用途,就是對圖元繪制,渲染,著色,特效的支撐,除此之外的
絕大部分功能都需要其他部分來支撐,比如物理, AI ,系統(tǒng)等方面,所以合理的使用一個(gè)不錯(cuò)的成熟的引擎,是更好的選擇。
關(guān)于 D3DX 內(nèi)的紋理、數(shù)學(xué)等函數(shù)使用起來還是很不錯(cuò)的。由于數(shù)學(xué)的抽象性,所以數(shù)學(xué)函數(shù)的持久性更長,
它就像 C++ Perl Python 這類語言一樣,像 Unix 的管道、重定向等機(jī)制一樣可以源遠(yuǎn)流長。
所以合理的利用現(xiàn)有的函數(shù),可以提高你的效率。
對于類庫建立著,學(xué)習(xí) DirectX 的方式,建立自己穩(wěn)固的,可復(fù)用高的 API 層,并在此基礎(chǔ)上構(gòu)件類庫更符合持久性。
DirectX 9 Ex
Direct3D 9Ex 是 Windows Vista 下的 Direct3D 9 增強(qiáng)版本
圖形管線
我們發(fā)現(xiàn)圖形管線增加了 Geometry Processing
D3DX 庫
D3DX Reference
分類
子類
用途
舉例
接口
ID3DXAnimationController
ID3DXBuffer
ID3DXEffect
ID3DXPRTBuffer
函數(shù)
動(dòng)畫函數(shù)
D3DXCreateAnimationController
D3DXFRAMEFind
一般函數(shù)
D3DXCreateFont
D3DXCreateBuffer
D3DXCreateRenderToSurface
數(shù)學(xué)函數(shù)
D3DXColorAdd
D3DXColorLerp
D3DSHAdd
D3DSHDot
網(wǎng)格函數(shù)
D3DXComputeBoundingBox
預(yù) RadianceTransfer(PRT) 函數(shù)
D3DXCreatePRTBuffer
著色函數(shù)
D3DXCompileShader
D3DXPreprocessShader
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateCylinder
紋理函數(shù)
D3DXCreateTexture
D3DXFillCubeTexture
UVAtlas 函數(shù)
D3DXUVAtlasCreate
D3DXComputeIMTFromPerVertexSignal
DirectX 10
DirectX 10 內(nèi)設(shè)置了 XACT XAudio2 XInput ,用來取代 DirectAudio 和 DirectInput
圖形管線
D3DX 庫
分類
舉例
舉例
接口
ID3DX10DataLoader
ID3DX10Font
ID3DX10Mesh
函數(shù)
一般函數(shù)
D3DX10CreateFont
D3DX10CompileFromFile
數(shù)學(xué)函數(shù)
D3DXColorAdjustContrast
D3DXMatrixInverse
D3DXMatrixReflect
網(wǎng)格函數(shù)
D3DX10CreateMesh
D3DXBoxBoundProbe
紋理函數(shù)
D3DX10ComputeNormalMap
D3DX10FilterTexture
綜述 : DirectX 是一套低級(jí) API, 雖然有大量的紋理和數(shù)學(xué),網(wǎng)格的實(shí)用函數(shù),但是如果您的目的是快速的開發(fā),那么直接使用 DirectX 來進(jìn)行開發(fā)并不是明智之舉。
哪怕是直接使用一個(gè)特性不那么多的二次封裝引擎,您的效率也是顯而易見的。除非您正在利用 DirectX 封裝圖形渲染器,或制造一個(gè)商業(yè)游戲引擎,那就另當(dāng)別論了。
如果您只是期望制造一個(gè)游戲,商用目的或想盡快制造一個(gè)游戲,期望直接進(jìn)入游戲編程和游戲設(shè)計(jì)主題,那么開源界有很多好用的游戲引擎在等著您。比如 Ogre Nebula 等等,
那是一片海洋,選擇什么樣的利刃全在于你。DirectX 7
1.
DirectX 8
DirectX 9
DirectX 9 Ex
DirectX 10
DirectX 7.0
新增的內(nèi)容:
一、 Direct3D 立即模式 API 增加了新特性,包括 : 設(shè)備狀態(tài)塊, 幾何混合,立方體環(huán)境映射 , 用戶自定義裁剪面。
二、
API 組成
第一、 Direct3D 快速模式
Direct3DX 實(shí)用庫
D3D 立即模式的體系結(jié)構(gòu)
在了解時(shí),主要了解 Direct3D Immediate Mode C/C++ Reference
以接口為中心 :
接口 : IDirect3D7
IDirect3DDevice7
IDirect3DVertexBuffer7
D3DX 實(shí)用庫是十分重要的庫,使用此庫可以便利開發(fā)。
D3DX 使用庫的功能
利用 D3DX 封裝 D3D 渲染器,利用 OpenGL API 封裝渲染器,渲染器的設(shè)計(jì)使用統(tǒng)一的接口產(chǎn)生不同的實(shí)現(xiàn)版本,
而且可拆卸,即可利用另一個(gè)架構(gòu)的渲染器完全替換掉此渲染器。渲染器 API 可以自由從 D3D 和 OpnGL 之間切換。
Direct3D Utility Library
下圖是 Direct3D Utility Library 位于 Direct3D API 庫的位置。
ID3DXContext ——根接口,用于狀態(tài)配置,紋理創(chuàng)建,顯示更新
ID3DXMatrixStack ——實(shí)現(xiàn)場景層次的輔助接口
ID3DXSimpleShape ——用于繪制圖元的 vertex-buffer 接口
Encapsulates ——封裝
Direct3DX Utility Library 本質(zhì)
主要用于創(chuàng)建對象,封裝對象,操作對象。
主要包括下面幾大類的 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 分類
用途
備注
代表函數(shù)
Direct3DX 和 Direct3D
第一、初始化 context object, 更方便的初始化 Direct3D 和 DirectDraw
第二、訪問 Direct3D 和 DirectDraw 對象
獲取 IDirect3DDevice7 接口
獲取 IDirect3D7 接口
獲取 IDirectDraw7 接口
D3DXCreateContextEx()
g_pd3dx->GetD3DDevice()
Direct3DX Context
封裝了所有各種 Direct3D 和 DirectDraw 對象
Direct3DX Devices
擴(kuò)展了 Direct3D device
可直接獲取設(shè)備數(shù)量
查詢 Direct3DX 設(shè)備
D3DXGetCurrentVideoMode
D3DXGetMaxNumVideoModes
D3DXGetVideoMode
Direct3DX Matrix Stack
記錄矩陣狀態(tài)
Hardware Acceleration Levels(HAL)
硬件加速
ID3DXContext::GetDeviceIndex
D3DXGetDeviceDescription
Sprite Support
輔助 Sprite 的 API, 用于 3D 圖形實(shí)現(xiàn) 2D sprite
D3DXPrepareDeviceForSprite
D3DXDrawSpriteSimple
Texturing Support
紋理輔助函數(shù)
轉(zhuǎn)換紋理格式
創(chuàng)建 cube-map 紋理
創(chuàng)建和加載紋理文件
創(chuàng)建紋理
生成 mipmap 紋理
過濾
從表面加載紋理
D3DXCreateTexture
D3DXCreateTextureFromFile
D3DXLoadTextureFromSurface
Simple Geometric Shapes
用于創(chuàng)建簡單的幾何形狀
立方體
圓柱體 / 圓錐體
圓環(huán)
N 邊多邊形
球體
茶壺
ID3DXSimpleShape
3-D Math Support
提供了詳細(xì)的數(shù)學(xué)函數(shù)支持
Direct3DX Utility Library Reference
具例
接口
ID3DXContext
ID3DXMatrixStack
ID3DXSimpleShape
函數(shù)
一般目的函數(shù)
用于執(zhí)行許多一般的任務(wù),如查詢設(shè)備,視頻模式,表面格式,設(shè)置和關(guān)閉 Direct3DX, 創(chuàng)建 contexts 和產(chǎn)生表面,像素格式
D3DXCreateContext
D3DXGetDeviceCount
D3DXInitialize
數(shù)學(xué)函數(shù)
2D 3D 數(shù)學(xué)計(jì)算
D3DXColorAdd
D3DXColorModulate
D3DXCreateMatrixStack
D3DXQuaternionIdentity
D3DXVec2Add
D3DXVec2Normalize
D3DXVec3Cross
D3DXMatrixInverse
D3DXVec4Add
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateCylinder
D3DXCreatePolygon
精靈輔助函數(shù)
D3DXBuildSpriteTransform
D3DXDrawSprite3D
紋理函數(shù)
D3DXCreateCubeMapTexutre
宏
D3DXToDegree
D3DXToRadian
結(jié)構(gòu)體
D3DXCOLOR
D3DXMATRIX
D3DXPLANE
D3DXVECTOR2
D3DXVECTOR3
D3DXVECTOR4
C++ 特定擴(kuò)展
D3DXCOLOR EX
D3DXMATRIX EX
D3DXPLANE EX
D3DXVECTOR2 EX
D3DXVECTOR3 EX
D3DXVECTOR4 EX
錯(cuò)誤返回值
用于判斷 D3D 的錯(cuò)誤
可以在 D3DX 庫的基礎(chǔ)上再封裝
D3DX 提供給開發(fā)者的東西太好了。
第二、 Direct3D 保留模式
數(shù)學(xué)函數(shù)是可以移植的
world-class 世界級(jí)
DirectX 7 的流水線
DirectX 8
新增
第一、 Pixel shader 1.2 1.3 1.4
第二、 D3DX 實(shí)用庫函數(shù)用于 meshes, textures, 凹凸映射,紋理和四元組
D3DXComputeTangent
D3DXComputeNormalMap
Effect 框架 ID3DXEffect
紋理庫
D3DXGetImageInformation 獲取圖像信息
D3DXSaveSurfaceToFile 保存位圖 24bit RGB .dds
紋理填充函數(shù)
D3DXFillTexture D3DXFillCubeTexture D3DXFillVolumeTexture
Mesh 庫
D3DXQuaternionSquadSetup
D3DXQuaternionSquad
各線異性的支持
點(diǎn)精靈的支持
3D 體文理支持
LOD 幾何的支持
索引頂點(diǎn)混合
第三、合并 DirectDraw 和 Direct3D
流水線變?yōu)?
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
這些接口都是低級(jí) 3D API 接口,可在此基礎(chǔ)上進(jìn)行二次封裝,或直接使用 D3DX 實(shí)用庫,并再次封裝 D3DX 實(shí)用庫。
Direct3DX C/C++ Reference 這是非常不錯(cuò)的圖形函數(shù)庫要比低級(jí) API 高層一些,但它的基礎(chǔ)就是 low-level API
用途
具例
接口
ID3DXBaseMesh
ID3DXEffect
ID3DXMesh
ID3DXPMesh
ID3DXSkinMesh
函數(shù)
效果函數(shù)
編譯、加載可編程著色器文件等
D3DXCreateEffect
D3DXCreateEffectFromFile
D3DXCreateEffectFromResource
數(shù)學(xué)函數(shù)
D3DXColorAdd
D3DXPlaneDotCoord
D3DXPlaneNormalize
網(wǎng)格函數(shù)
D3DXBoxBoundProbe
D3DXComputeBoundingBox
D3DXComputeBoundingSphere
D3DXComputeNormals
D3DXComputeTangent
D3DXIntersect
Misc 函數(shù)
D3DXCreateFont
著色函數(shù)
D3DXAssembleShader
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateCylinder
D3DXCreateText
D3DXCreateTeapot
紋理函數(shù)
D3DXComputeNormalMap
D3DXCreateCubeTexture
D3DXCreateTexture
D3DXCreateVolumeTexture
D3DXLoadSurfaceFromFile
D3DXSaveSurfaceToFile
數(shù)學(xué)函數(shù)可能是可復(fù)用度最高的,而其他函數(shù)也非常高。比如紋理函數(shù),基于這些紋理函數(shù),可以創(chuàng)建很多實(shí)用的工具。
Direct3D 8 的 Mesh 函數(shù)非常豐富,這十分強(qiáng)大。
雖然 Direct3D 8 提供了大量的 D3DX 友好函數(shù),但是離具體的游戲邏輯還是十分遙遠(yuǎn)。
所以選擇合適的引擎更接近于游戲邏輯,但結(jié)合引擎和 D3D 8 9 的 API ,并利用條件編譯
這可以讓你的工作更便捷。 Direct3D 8 使用的主要是匯編級(jí)的著色器。
Direct3D 9 則使用了 HLSL 。
如果你能利用 BSP Octree Quadtree Portal K-D tree 來構(gòu)造場景管理器,并利用一些輔助引擎,以及 D3DX 來制造渲染器,
那么這種試驗(yàn)是很適合正在學(xué)習(xí)中的 Fans 的。 DirectX 8 的紋理函數(shù)十分膨脹,這為你創(chuàng)建更強(qiáng)大工具提供了很好的支撐。
X File C/C++ 參考
IDirectXFile
IDirectXFileBinary
IDirectXFileSaveObject
DirectXFileCreate
DirectX 9.0
DirectX 9.0a
DirectX 9.0b
DirectX 9.0c
增加的功能
第一、 HLSL 流程控制
第二、 預(yù)計(jì)算 Radiance Transfer(PRT)
第三、 Tone Mapping 用于 HDR Lighting
第四、 動(dòng)畫方面的更新
ID3DXAnimationCallbackHandler
ID3DXAnimationController
DirectX 9.0 的歷史將更長
DirectX 9.0 的流水線
這個(gè)流水線和 8.0 的變化不大
Direct3D 9 的 D3DX 庫
用途
舉例
接口
ID3DXAllocateHierarchy
ID3DXAnimationCallbackHandler
ID3DXAnimationController
ID3DXBuffer
ID3DXEffect
函數(shù)
動(dòng)畫函數(shù)
D3DXCreateAnimationController
D3DXCreateKeyframedAnimationSet
D3DXFrameFind
D3DXLoadMeshHierarchyFromX
數(shù)學(xué)函數(shù)
D3DXColorAdd
D3DXColorLerp
D3DXMatrixReflect
D3DXVec3Lerp
D3DXVec3Scale
D3DXVec4Lerp
網(wǎng)格函數(shù)
D3DXComputeBoundingBox
D3DXComputeBoundingSphere
D3DXIntersectSubset
一般函數(shù)
D3DXCreateBuffer
D3DXCreateSprite
著色器函數(shù)
D3DXAssembleShader
D3DXCompileShader
D3DXCompileShaderFromFile
D3DXGetShaderVersion
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateTeapot
紋理函數(shù)
D3DXComputeNormalMap
D3DXCreateCubeTexture
D3DXCreateTexture
D3DXCreateVolumeTexture
D3DXFillCubeTexture
D3DXSaveSurfaceToFile
PRT 函數(shù)
D3DXSHPRTCompExtractBasis
D3DXSHPRTCompExtractClusterIDs
D3DXSHPRTCompExtractTexture
DirectX 8 9 SDK 的 D3DX 的函數(shù)都十分不錯(cuò)。
但總體來說這些函數(shù)的使用要看針對的是什么計(jì)算任務(wù),要合理的使用,而不要一味的濫用。
DirectX 9.0 提供的特性只是游戲需要的一部分,它的最直接的用途,就是對圖元繪制,渲染,著色,特效的支撐,除此之外的
絕大部分功能都需要其他部分來支撐,比如物理, AI ,系統(tǒng)等方面,所以合理的使用一個(gè)不錯(cuò)的成熟的引擎,是更好的選擇。
關(guān)于 D3DX 內(nèi)的紋理、數(shù)學(xué)等函數(shù)使用起來還是很不錯(cuò)的。由于數(shù)學(xué)的抽象性,所以數(shù)學(xué)函數(shù)的持久性更長,
它就像 C++ Perl Python 這類語言一樣,像 Unix 的管道、重定向等機(jī)制一樣可以源遠(yuǎn)流長。
所以合理的利用現(xiàn)有的函數(shù),可以提高你的效率。
對于類庫建立著,學(xué)習(xí) DirectX 的方式,建立自己穩(wěn)固的,可復(fù)用高的 API 層,并在此基礎(chǔ)上構(gòu)件類庫更符合持久性。
DirectX 9 Ex
Direct3D 9Ex 是 Windows Vista 下的 Direct3D 9 增強(qiáng)版本
圖形管線
我們發(fā)現(xiàn)圖形管線增加了 Geometry Processing
D3DX 庫
D3DX Reference
分類
子類
用途
舉例
接口
ID3DXAnimationController
ID3DXBuffer
ID3DXEffect
ID3DXPRTBuffer
函數(shù)
動(dòng)畫函數(shù)
D3DXCreateAnimationController
D3DXFRAMEFind
一般函數(shù)
D3DXCreateFont
D3DXCreateBuffer
D3DXCreateRenderToSurface
數(shù)學(xué)函數(shù)
D3DXColorAdd
D3DXColorLerp
D3DSHAdd
D3DSHDot
網(wǎng)格函數(shù)
D3DXComputeBoundingBox
預(yù) RadianceTransfer(PRT) 函數(shù)
D3DXCreatePRTBuffer
著色函數(shù)
D3DXCompileShader
D3DXPreprocessShader
形狀繪制函數(shù)
D3DXCreateBox
D3DXCreateCylinder
紋理函數(shù)
D3DXCreateTexture
D3DXFillCubeTexture
UVAtlas 函數(shù)
D3DXUVAtlasCreate
D3DXComputeIMTFromPerVertexSignal
DirectX 10
DirectX 10 內(nèi)設(shè)置了 XACT XAudio2 XInput ,用來取代 DirectAudio 和 DirectInput
圖形管線
D3DX 庫
分類
舉例
舉例
接口
ID3DX10DataLoader
ID3DX10Font
ID3DX10Mesh
函數(shù)
一般函數(shù)
D3DX10CreateFont
D3DX10CompileFromFile
數(shù)學(xué)函數(shù)
D3DXColorAdjustContrast
D3DXMatrixInverse
D3DXMatrixReflect
網(wǎng)格函數(shù)
D3DX10CreateMesh
D3DXBoxBoundProbe
紋理函數(shù)
D3DX10ComputeNormalMap
D3DX10FilterTexture
綜述 : DirectX 是一套低級(jí) API, 雖然有大量的紋理和數(shù)學(xué),網(wǎng)格的實(shí)用函數(shù),但是如果您的目的是快速的開發(fā),那么直接使用 DirectX 來進(jìn)行開發(fā)并不是明智之舉。
哪怕是直接使用一個(gè)特性不那么多的二次封裝引擎,您的效率也是顯而易見的。除非您正在利用 DirectX 封裝圖形渲染器,或制造一個(gè)商業(yè)游戲引擎,那就另當(dāng)別論了。
如果您只是期望制造一個(gè)游戲,商用目的或想盡快制造一個(gè)游戲,期望直接進(jìn)入游戲編程和游戲設(shè)計(jì)主題,那么開源界有很多好用的游戲引擎在等著您。比如 Ogre Nebula 等等,
那是一片海洋,選擇什么樣的利刃全在于你。
總結(jié)
- 上一篇: 重新规划,希望是转机
- 下一篇: 管理者和领导者