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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Direct3DX

發(fā)布時(shí)間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Direct3DX 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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é)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。