IDirect3D* WINAPI Direct3DCreate9(
UINT SDKVersion //版本号
); //创建Direct3D9接口对象
HRESULT IDirect3D::GetDeviceCaps(
UINT Adapter, //显卡号(一般为D3DADAPTER_DEFAULT)
D3DDEVTYPE DeviceType, //设备类型(一般为D3DDEVTYPE_HAL)
D3DCAPS9* pCaps //返回设备功能信息
); //本机显示卡功能检测
HRESULT IDirect3D::GetAdapterDisplayMode(
UINT Adapter, //显卡号
D3DDISPLAYMODE* pMode //显示模式
); //获得显卡的显示模式
typedef struct _D3DDISPLAYMODE{
UINT Width; //屏幕像素宽度
UINT Height; //屏幕像素高度
UINT RefreshRate; //刷新率
D3DFORMAT Format; //显卡使用的各种绘图表面格式
}D3DDISPLAYMODE; //显示模式结构体
typedef struct _D3DPRESENT_PARAMETERS_ {
UINT BackBufferWidth,BackBufferHeight; //后绘图表面的像素宽高
D3DFORMAT BackBufferFormat; //后绘图表面的各种数据格式(如像素颜色格式)
UINT BackBufferCount; //后绘图表面的数目
D3DMULTISAMPLE_TYPE MultiSampleType; //多重采样类型
DWORD MultiSampleQuality; //多重采样品质
D3DSWAPEFFECT SwapEffect; //前后绘图表面的交换方式
HWND hDeviceWindow; //所在的窗口句柄
BOOL Windowed; //true表示使用窗口;false表示使用全屏
BOOL EnableAutoDepthStencil; //使能自动深度蒙板
D3DFORMAT AutoDepthStencilFormat; //自动深度蒙版格式
DWORD Flags; //后绘图表面可否锁定等标志
UINT FullScreen_RefreshRateInHz; //屏幕刷新率(如果使用窗口,则必须设置为0)
UINT PresentationInterval; //前、后绘图表面的最大交换频率
} D3DPRESENT_PARAMETERS; //设备显示属性结构体
HRESULT IDirect3D::CreateDevice(
UINT Adapter, //显示卡编号
D3DDEVTYPE DeviceType, //设备类型
HWND hFocusWindow, //所属窗口句柄
DWORD BehaviorFlags, //设备行为标志
D3DPRESENT_PARAMETERS* pPresentationParameters, //显示属性参数
IDirect3DDevice9** ppReturnedDeviceInterface //返回的设备接口指针
); //创建渲染设备
HRESULT IDirect3DDevice9::CreateVertexBuffer(
UINT Length, //顶点缓冲区的大小
DWORD Usage, //顶点缓冲区的用法
DWORD FVF, //可变的顶点格式
D3DPOOL Pool, //顶点缓冲区所使用的内存池类型
IDirect3DVertexBuffer9** ppVertexBuffer, //顶点缓冲区的指针
HANDLE* pSharedHandle //保留字,设置为NULL
); //创建顶点缓冲区
HRESULT IDirect3DVertexBuffer9::Lock(
UINT OffsetToLock, //锁定的起始字节位置
UINT SizeToLock, //锁定字节的大小
VOID** ppbData, //返回的顶点缓冲区指针
DWORD Flags //锁定标志
); //内存锁定,返回顶点缓冲区指针
HRESULT IDirect3DDevice9::Clear(
DWORD Count, //要清除的绘图表面的矩形区域个数
const D3DRECT* pRects, //所清除的绘图表面的区域
DWORD Flags, //清除标志
D3DCOLOR Color, //清除后的新颜色值
float Z, //所清除的Z-Buffer缓冲区的新Z值(0--1之间)
DWORD Stencil //所清除的Stencil缓冲区的新值
); //清除设备缓冲区数据
HRESULT IDirect3DDevice9::BeginScene(VOID); //启动设备管道流水线
HRESULT IDirect3DDevice9::EndScene(VOID); //停止设备管道流水线
//以上两个函数必须成对出现,且3D场景渲染代码必须放到他们中间
HRESULT IDirect3DDevice9::SetStreamSource(
UINT StreamNumber, //管道流水线编号
IDirect3DVertexBuffer9* pStreamData, //顶点缓冲区指针
UINT OffsetInBytes, //缓冲区数据的偏移字节位置
UINT Stride //顶点带宽,一般为顶点结构体的字节大小
); //顶点缓冲区数据装入管道流水线
HRESULT IDirect3DDevice9::SetFVF(
DWORD FVF //可变顶点格式
); //设置顶点格式
HRESULT IDirect3DDevice9::DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType, //所采用的3D原始类型
UINT StartVertex, //起始顶点的索引
UINT PrimitiveCount //绘制图元个数
); //绘制基本图元(三角形)
HRESULT IDirect3DDevice9::Present(
CONST RECT* pSourceRect, //一般说明为NULL
CONST RECT* pDestRect, //一般说明为NULL
HWND hDestWindowOverride, //一般说明为NULL
CONST RGNDATA* pDirtyRegion //一般说明为NULL
); //交换前后绘图表面