您的位置:首页 > 其它

用Dx创建一个简单的窗口

2014-02-10 17:32 225 查看
效果:


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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: