Direct3D learning (2)-函數收集

收集一些在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
);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章