创建D3D对象:
1 Direct3DCreate9(D3D_SDK_VERSION);
1 Direct3DCreate9(D3D_SDK_VERSION);
获取显卡显示模式:
1 HRESULT GetAdapterDisplayMode(
2 UINT Adapter, //指定显示卡序列号
3 D3DDISPLAYMODE *pMode //存储显示模式的指针
4 );
2 UINT Adapter, //指定显示卡序列号
3 D3DDISPLAYMODE *pMode //存储显示模式的指针
4 );
创建D3D设备接口:
1 HRESULT CreateDevice(
2 UINT Adapter,//显卡序列号
3 D3DXDEVTYPE DeviceType,//D3D设备类型
4 HWND hFocusWindow,//所属窗口句柄
5 DWORD BehaviorFlags,//设备进行3D运算方式
6 D3DPRESENT_PARAMETERS *pPresentionParameters,//用于存储D3D设备相关信息的指针
7 IDirect3DDevice9 **ppReturnedDeviceInterface//返回D3D设备接口指针的地址
8 );
2 UINT Adapter,//显卡序列号
3 D3DXDEVTYPE DeviceType,//D3D设备类型
4 HWND hFocusWindow,//所属窗口句柄
5 DWORD BehaviorFlags,//设备进行3D运算方式
6 D3DPRESENT_PARAMETERS *pPresentionParameters,//用于存储D3D设备相关信息的指针
7 IDirect3DDevice9 **ppReturnedDeviceInterface//返回D3D设备接口指针的地址
8 );
第二个参数DeviceType 取值:
D3DDEVTYPE_HAL //硬件抽象层,通过显示硬件来完成图形渲染工作
D3DDEVTYPE_REF //参考光栅器,一般用于测试显卡不支持的D3D 功能
D3DDEVTYPE_SW //用于支持第三方软件
第四个参数BehaviorFlags 取值:
D3DCREATE_SOFTWARE_VERTEXPROCESSING //由D3D 软件进行顶点运算(常用)
D3DCREATE_FPU_PRESERVE //激活双精度浮点运算或浮点运算异常检测,设置该项会降低系统性能
D3DCREATE_MULTITHREADED //保证D3D 是多线程安全的,设置该项会降低系统性能
D3DCREATE_MIXED_VERTEXPROCESSING //由混合方式进行顶点运算
D3DCREATE_HARDWARE_VERTEXPROCESSING //由D3D 硬件进行顶点运算
D3DCREATE_PUREDEVICE //禁用D3D 的Get*()函数,禁止D3D使用虚拟设备模拟顶点运算
开始渲染和结束渲染:
1 BeginScene();//开始渲染
2 ......
3 实际的渲染工作
4 ......
5 EndScene();//结束渲染
2 ......
3 实际的渲染工作
4 ......
5 EndScene();//结束渲染
注意:
这两个函数必须成对出现,不允许交错和嵌套的发生,实际的渲染工作在这两个函数的
中间进行。
清空图形绘制区:
1 HRESULT Clear(
2 DWORD Count, //清除的矩形区域数量
3 const D3DRECT *pRects, //清除的矩形区域数组指针
4 DWORD Flags, //清除的缓冲区标志,指定清除哪一个缓
5 冲区
6 D3DCOLOR Color, //清除后重置的颜色
7 float Z, //清除后重置的深度值,从0-1.0
8 DWORD Stencil //重置的模板值
9 );
2 DWORD Count, //清除的矩形区域数量
3 const D3DRECT *pRects, //清除的矩形区域数组指针
4 DWORD Flags, //清除的缓冲区标志,指定清除哪一个缓
5 冲区
6 D3DCOLOR Color, //清除后重置的颜色
7 float Z, //清除后重置的深度值,从0-1.0
8 DWORD Stencil //重置的模板值
9 );
第三个参数Flags 取值(可任意组合):
D3DCLEAR_STENCIL //模板缓冲区
D3DCLEAR_TARGET //颜色缓冲区
D3DCLEAR_ZBUFFER //深度缓冲区
屏幕反转:
1 HRESULT Present(
2 CONST RECT *pSourceRect, //复制源的矩形区域指针
3 CONST RECT *pDestRect, //复制目的地的矩形区域指针
4 HWND hDestWindowOverride, //D3D 设备窗口句柄
5 CONST RGNDATA *pDirtyRegion //最小更新区域指针
6 );
2 CONST RECT *pSourceRect, //复制源的矩形区域指针
3 CONST RECT *pDestRect, //复制目的地的矩形区域指针
4 HWND hDestWindowOverride, //D3D 设备窗口句柄
5 CONST RGNDATA *pDirtyRegion //最小更新区域指针
6 );
注意:
除非D3D 的交换链是用D3DSWAPEFFECT_COPY 的标志创建,在大多数的情况下,此
函数的各个参数都设置为NULL。