D3D學習筆記(二)

2021-09-30 12:08:22 字數 1757 閱讀 1342

d3d表面

idirect3dsu***ce9介面來描述表面

該介面最重要的方法有:

lockrect:該方法用於獲取指向表面儲存區的指標

unlockrect 如果呼叫了lockrect方法,而且已執行完訪問表面儲存區的操作,必須呼叫該方法來解除對表面儲存區的鎖定

getdesc 該方法可通過填充結構d3dsu***ce_desc來獲取該表面的描述資訊

以下是方法呼叫示例:

d3dsu***ce_desc su***cedesc;

_su***ce->getdesc(&su***cedesc);//假設_su***ce是指向idirect3dsu***ce9 inte***ce的乙個指標

d3dlocked_rect lockedrect;

_su***ce->lockrect(

&lockedrect,//接收鎖定資訊的指標

0,//鎖定整個表面

0);多重取樣

d3d初始化

(1)獲取介面idirect3d9的指標,該介面用於建立物理硬體裝置的資訊並建立介面idirect3ddevice,該介面代表了

用來顯示3d圖形的物理硬體裝置。

idirect3d9* _d3d9;

_d3d9=direct3dcreate9(d3d_sdk_version);

(2)檢查裝置效能d3dcaps9,判斷主顯示卡是否支援硬體頂點計算

例如:d3dcaps9 caps;

d3d9->getdevicecaps(

d3dadapter_default,

devicetype,

&caps);

(3)初始化d3dpresent_parameter結構指定即將建立idirect3ddevice9物件的特性

bcakbufferwidth 後台快取中表面的寬度,單位為畫素

backbufferheight 後台快取中表面的高度,單位為畫素

backbufferformat 後台快取的畫素格式

backbuffercount所需使用後台快取的個數

multisampletype後台快取所使用的多重取樣型別

multisamplequality多重取樣的質量水平

swapeffect d3dswapeffect列舉型別的乙個成員,該列舉型別指定了交換鏈中的快取的頁面置換方式

hdevicewindow與裝置相關的視窗控制代碼,指定了所要進行繪製的應用程式視窗

windowed為true時,表示視窗模式。為false時,表示全屏模式

enableautodepthstencil設為true

autodepthstencilformat深度快取或模板快取的畫素格式

重新整理頻率fullscreen_refreshrateinhz重新整理頻率

presentationinterval d3dpresent集合的乙個成員。完整的合法時間間隔列表請參閱sdk文件

d3dpresent_interval_immediate 立即提交

or d3dpresent_interval_default 由direct3d來選擇提交頻率.

(4)利用已初始化的d3dpresent_parameter建立idirect3ddevice9物件

d3dutility.h/cpp所提供的函式

initd3d該函式對應用進行direct3d初始化如果成功,將得到乙個指向idirect3ddevice9的指標

entermsgloop該函式封裝了應用程式的訊息迴圈,它接收乙個指向顯示函式的函式指標

D3D學習筆記(四)

光照 光照可分為環境光,漫射光,鏡面光三種 三種顏色的光均可用d3decolorvalue或d3dxcolor來表示,描述光線的顏色時,d3dxcolor中的alpha值將被忽略 材質 材質可用結構d3dmaterial9來表示 typedef struct d3dmaterial9d3dmater...

D3D學習筆記(七)

幾何資訊 id3dxbasemesh介面包含乙個頂點快取和乙個索引快取,可用以下方法得到指向這些介面的指標。hresult id3dxmesh getvertexbuffer9 vb 0 hresult id3dxmesh getindexbuffer9 ib 0 如果想鎖定快取進行讀寫操作,那麼可...

D3D學習筆記 繪製

1 頂點 索引緩衝區 頂點 索引緩衝區是一片儲存著頂點 索引資料的記憶體。頂點緩衝區通過idirect3dvertexbuffer9介面來定義的。索引緩衝區時通過idirect3dindexbuffer9介面來定義的。1.1 建立乙個頂點緩衝區和乙個索引緩衝區 建立頂點緩衝區函式原型 hresult...