WEB开发网
开发学院软件开发VC MFC架构下的DirectX8 阅读

MFC架构下的DirectX8

 2010-05-25 20:36:05 来源:WEB开发网   
核心提示:第二章 初始化DirectX8(DX8MFC1)本例将以第一章的MFC框架为基础对CFrameWin类进行扩展,主要加入了DrawScene()、InitDirect3D(HWND hwnd)和ShutdownDirect3D()三个函数,MFC架构下的DirectX8(2),InitDirect3D(HWND hwn

第二章 初始化DirectX8

(DX8MFC1)

本例将以第一章的MFC框架为基础对CFrameWin类进行扩展。主要加入了DrawScene()、InitDirect3D(HWND hwnd)和ShutdownDirect3D()三个函数。

InitDirect3D(HWND hwnd)函数对Direct3D进行初始化:
HRESULT CFrameWin::InitDirect3D(HWND hwnd)
{
pID3D = Direct3DCreate8(D3D_SDK_VERSION);
HRESULT hr;
do
{
// we need the display mode so we can get
// the properties of our back buffer
D3DDISPLAYMODE d3ddm;
hr = pID3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
if(FAILED(hr))
break;
D3DPRESENT_PARAMETERS present;
ZeroMemory(&present, sizeof(present));
present.SwapEffect = D3DSWAPEFFECT_COPY;
present.Windowed = TRUE;
present.BackBufferFormat = d3ddm.Format;
hr = pID3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&present,
&pID3DDevice);
if(FAILED(hr))
break;
// we do our own coloring, so disable lighting
hr = pID3DDevice->SetRenderState(D3DRS_LIGHTING,
FALSE);
} while(0);
return hr;
}

IDirect3D是我们首先要用到的接口,你可以这样写:

IDirect3D8 * pID3D = Direct3Dcreate8(D3D_SDK_VERSION);

在你使用pID3D以前,请检查pID3D是否为非空。

你下一步通常是创建D3D设备,但在创建D3D设备之前你要调用GetAdapterDisplayMode方法取得必须的信息:

D3DDISPLAYMODE d3ddm;

pID3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

接下来是取得当前显示模式参数。下面的参数是Surface格式。你可以用这些参数来创建一个D3DPRESENT_PARAMETERS结构:

D3DPRESENT_PARAMETERS present;

ZeroMemory(&present, sizeof(present));

present.SwapEffect = D3DSWAPEFFECT_COPY;

present.Windowed = TRUE;

present.BackBufferFormat = d3ddm.Format;

D3DPRESENT_PARAMETERS描述了显示器Surface的信息,交换机制的类型,应用程序是窗口的还是全屏模式等信息。

在本例中,Surface是以拷贝方法代替页面翻转的,因为它是一个窗口模式的应用程序。把后台表面设置成与当前显示模式相匹配的格式,一个准备显示的Surface可以Draw在后台表面上。

现在你可以创建一个IDirect3DDevice8接口了:

pID3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&present,
&pID3DDevice);

上一页  1 2 3 4 5 6  下一页

Tags:MFC 架构 DirectX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接