收集一些在Direct3D程序中的函數及其說明。
一, 公共函數部分
1. D3DXMatrixRotationX, D3DXMatrixRotationY, D3DXMatrixRotationZ 用於生成變換的矩陣
D3DXMATRIX *WINAPI D3DXMatrixRotationX(
D3DXMATRIX *pOut, // 生成的矩陣
FLOAT Angle // 圍繞x軸旋轉的角度
);
2. D3DXMatrixMultiply 用於計算2個矩陣的乘積。
D3DXMATRIX *WINAPI D3DXMatrixMultiply(
D3DXMATRIX *pOut, // 生成的矩陣結果
CONST D3DXMATRIX *pM1, // 矩陣
CONST D3DXMATRIX *pM2
);
3. D3DXMatrixLookAtLH, D3DXMatrixLookAtRH 生成一個左/右手系視圖矩陣
D3DXMATRIX *WINAPI D3DXMatrixLookAtLH(
D3DXMATRIX *pOut, // 輸出的結果矩陣
CONST D3DXVECTOR3 *pEye, // 眼睛的位置點
CONST D3DXVECTOR3 *pAt, // 看着的點,用於同pEye一起指明視線方向。
CONST D3DXVECTOR3 *pUp // 向上的點,用於指明哪個是上方
);
4. D3DXMatrixPerspectiveFovLH, D3DXMatrixPerspectiveFovRH 生成一個左/右手系的投影矩陣
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveFovLH(
D3DXMATRIX *pOut, // 輸出的結果
FLOAT fovy, // 視角,弧度
FLOAT Aspect, // 縱橫比
FLOAT zn, // 最近視界
FLOAT zf // 最遠視界
);
5. Direct3DCreate9 創建Direct3D9接口指針
IDirect3D9 *WINAPI Direct3DCreate9(
UINT SDKVersion // SDK 的版本 用宏D3D_SDK_VERSION表示
);
6. D3DXVec3Normalize 格式化3D向量,即轉化爲單位向量
D3DXVECTOR3 *WINAPI D3DXVec3Normalize(
D3DXVECTOR3 *pOut, // 輸出
CONST D3DXVECTOR3 *pV // 輸入
);
7. D3DXVec3Cross 計算2個響亮的交叉乘積。應該是同時垂直於這2個向量。
D3DXVECTOR3 *D3DXVec3Cross(
D3DXVECTOR3 *pOut, // 輸出
CONST D3DXVECTOR3 *pV1, // 向量1
CONST D3DXVECTOR3 *pV2 // 向量2
);
二,對象接口部分
1. IDirect3D9
a. GetAdapterDisplayMode 獲得一個顯卡的顯示模式
HRESULT GetAdapterDisplayMode(
UINT Adapter, // 顯卡的序號, D3DADAPTER_DEFAULT 表示主顯卡
D3DDISPLAYMODE *pMode // 輸出結果
);
b. CreateDevice 創建一個對於顯卡的設備指針
HRESULT CreateDevice(
UINT Adapter, // 顯卡的序號, D3DADAPTER_DEFAULT 表示主顯卡
D3DDEVTYPE DeviceType, // 設備類型
HWND hFocusWindow, // 窗口
DWORD BehaviorFlags, // 控制標誌
D3DPRESENT_PARAMETERS *pPresentationParameters, // 設備的參數。
IDirect3DDevice9 **ppReturnedDeviceInterface // 輸出的指針
);
2. IDirect3DDevice9
a. SetTransform 用於設定device的一些變換狀態,包括世界矩陣,視圖矩陣,投影矩陣的設置。
HRESULT SetTransform(
D3DTRANSFORMSTATETYPE State, // 指定要修改的device的那個狀態
CONST D3DMATRIX *pMatrix // 指定變換的矩陣
);
b. Clear 用於清除一個表面上的矩形區域
HRESULT Clear(
DWORD Count, // pRects的個數
const D3DRECT *pRects, // RECT數組
DWORD Flags, // 清除的表面
D3DCOLOR Color, // 用什麼顏色進行清除
float Z, // 清除後的深度z
DWORD Stencil // 清除後的模板內存值
);
c. BeginScene, EndScene 開始/結束場景的描畫,
HRESULT BeginScene(VOID);
HRESULT EndScene(VOID);
d. SetStreamSource綁定一個頂點內存
HRESULT SetStreamSource(
UINT StreamNumber, // 指定綁定的位置,位於streams的位置
IDirect3DVertexBuffer9 *pStreamData, // 頂點內存指針
UINT OffsetInBytes, // 從流開始處到頂點內存開始處的偏移量,字節單位
UINT Stride // 頂點結構的大小
);
e. SetFVF 設置當前頂點的大小聲明。
HRESULT SetFVF(
DWORD FVF // 頂點結構的大小
);
f. SetVertexShader 設置頂點的陰暗
HRESULT SetVertexShader(
IDirect3DVertexShader9* pShader // 頂點陰暗的接口
);
g. DrawPrimitive 着色處理,將stream中的數據描畫出來。
HRESULT DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType, //指明原始數據的類型
UINT StartVertex, //起始頂點
UINT PrimitiveCount //頂點個數
);
h. Present 切換顯示下一個緩存中的內容。
HRESULT Present(
CONST RECT *pSourceRect, // 源矩形
CONST RECT *pDestRect, // 目的矩形
HWND hDestWindowOverride, // 窗口
CONST RGNDATA *pDirtyRegion // 要刷新的矩形
);
i. SetRenderState 設置描畫的一些狀態
HRESULT SetRenderState(
D3DRENDERSTATETYPE State, // 狀態類型
DWORD Value // 設置的值
);
j. CreateVertexBuffer 創建頂點內存
HRESULT CreateVertexBuffer(
UINT Length, // 內存長度
DWORD Usage, //
DWORD FVF, // FVF的格式
D3DPOOL Pool, // 描述可用於放置資源的內存類型
IDirect3DVertexBuffer9** ppVertexBuffer, // 頂點指針
HANDLE* pSharedHandle // 預留,NULL
);