DirectX SDK 提供 DirectDraw、DirectSound、DirectPlay、Direct3D、DirectInput 五大組件,是 Windows 遊戲開發基石。結合 MFC 類別庫可善用 ClassWizard 訊息對應、ClassView 管理、程式碼重用等優勢。本文示範建立 DirectX 基礎框架步驟。
CDirectXWnd (CWnd 衍生) 作為主視窗類別,封裝 DirectDraw 初始化、前景/背景緩衝區建立、虛擬函數供衍生類別覆寫。CWinApp::InitInstance:建立 CDirectXWnd、呼叫 InitializeGame(640,480,8)、進入訊息迴圈,PeekMessage 空閒時呼叫 UpdateFrame。BOOL CDirectXApp::InitInstance() {
// ... 標準初始化 ...
CDirectXWnd *pWnd = new CDirectXWnd();
pWnd->Create("DirectXWnd Test");
m_pMainWnd = pWnd;
pWnd->UpdateWindow(); pWnd->SetFocus();
if (pWnd->InitializeGame(640,480,8) == FALSE) { pWnd->DestroyWindow(); return FALSE; }
MSG msg;
while (1) {
if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
if (!GetMessage(&msg, NULL, 0, 0)) return msg.wParam;
TranslateMessage(&msg); DispatchMessage(&msg);
} else {
if (pWnd->blsActive) pWnd->UpdateFrame();
}
}
return FALSE;
}
編譯執行可見黑色全螢幕視窗,按 ESC/F12 結束。此框架可進一步擴充為完整遊戲引擎基底,亦可撰寫 Custom AppWizard 重複使用。