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