效果:
D3D的初始化流程:
1、创建D3D对象
对象类型:LPDIRECT3D9
创建函数:Direct3DCreate9(D3D_SDK_VERSION)
2、创建D3D设备
设备对象类型:LPDIRECT3DDEVICE9
创建函数:g_D3D -> CreateDevice(*,*,*,*,A,保存设备的对象);
A:用来初始化设备的参数
A的类型:D3DPRESENT_PARAMETERS
常用参数包括:BackBufferWidth BackBufferHeight BackBufferFormat
(这个格式需要从DISPLAYMODE获得,用GetAdapterDisplayMode)
Windowed SwapEffect
3、渲染
清理目标缓存 clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,0,0),1.0f,0);
开始渲染 BeginScene()
停止渲染 EndScene()
显示图像 Present()
对应源代码:
LPDIRECT3D9 g_D3D;
LPDIRECT3DDEVICE9 g_D3DDevice;
//创建D3D对象
g_D3D = Direct3DCreate9(D3D_SDK_VERSION);
//创建D3D设备 : 需要 初始化设备的参数对象D3DPRESENT_PARAMETERS,这个对象又需要DISPLAYMODE的格式
//1、获取显示模式的格式
D3DDISPLAYMODE displaymode;
g_D3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &displayMode);
//2、创建初始化设备的参数对象
D3DPRESENT_PARAMETERS d3dpp;
d3dpp.windowed = false;
d3dpp.BackBufferWidht = 640;
d3dpp.BackBufferHeight = 480;
OR
d3dpp.windowed = true;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = displaymode.Format;
//3、创建D3D设备对象
g_D3D -> CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_D3DDevice);
//下面就可以开始渲染了
g_D3DDevice -> Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,0,0),1.0f,0);
g_D3DDevice -> BeginScene();
g_D3DDevice -> EndScene();
g_D3DDevice -> Present(0,0,0,0);