日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Direct3DX

發布時間:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Direct3DX 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 等等,

那是一片海洋,選擇什么樣的利刃全在于你。

總結

以上是生活随笔為你收集整理的Direct3DX的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。