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

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