Direct3D 9 核心概念筆記,涵蓋表面、多重採樣、像素格式、內存池、交換鏈/頁面置換、深度緩存,以及設備初始化完整步驟。
IDirect3DSurface9 描述。LockRect/UnlockRect 讀寫像素,GetDesc 獲取描述。D3DMULTISAMPLE_TYPE 枚舉從 NONE 到 16_SAMPLES,平滑鋸齒。D3DFORMAT 如 D3DFMT_A8R8G8B8、D3DFMT_D24S8 等。D3DPOOL_DEFAULT(顯存/AGP/系統)、D3DPOOL_MANAGED(驅動管理備份)、D3DPOOL_SYSTEMMEM(系統內存)、D3DPOOL_SCRATCH(系統內存,設備不可訪問)。IDirect3DSwapChain9 管理後台緩存,D3DSWAPEFFECT_DISCARD 效率最高。Direct3DCreate9(D3D_SDK_VERSION) 獲取 IDirect3D9 接口。GetDeviceCaps 檢查硬件頂點處理能力,決定 D3DCREATE_HARDWARE_VERTEXPROCESSING 或 SOFTWARE。D3DPRESENT_PARAMETERS:後台緩存尺寸/格式/數量、多重採樣、交換效果、窗口句柄、窗口/全屏模式、自動深度模板、刷新率、呈現間隔。CreateDevice 創建 IDirect3DDevice9,失敗時嘗試 16 位深度緩存回退。D3DPRESENT_PARAMETERS d3dpp; d3dpp.BackBufferWidth = nWidth; d3dpp.BackBufferHeight = nHeight; d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; d3dpp.BackBufferCount = 1; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow = hWnd; d3dpp.Windowed = bWindowed; d3dpp.EnableAutoDepthStencil = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; hResult = d3d9->CreateDevice(D3DADAPTER_DEFAULT, deviceType, hWnd, vp, &d3dpp, &device);
理解這些基礎概念是進行 Direct3D 圖形編程的前提。