首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ Builder DirectX 程式設計實戰(一):DirectDraw 基礎架構與全螢幕獨佔模式建立流程

     編輯:關於C++

前言

本系列教導如何在 C++ Builder 中使用 DirectX 進行高效能遊戲/多媒體開發。開發環境:中文 Windows 98、C++ Builder 4、DirectX 6+ SDK。本文為第一篇,奠定 DirectDraw 核心概念與初始化流程。

一、DirectX 核心特性

  • 標準高效能遊戲/多媒體工具包,與 OS 完美整合。
  • 硬體抽象層 (HAL) + 硬體模擬層 (HEL):查詢「相容表」,硬體支援走 HAL,否則走 HEL 模擬。
  • 元件物件模型 (COM):介面版本獨立,保證向前相容。

二、DirectX 主要元件

三、DirectDraw 兩種顯示模式

  1. 全螢幕獨佔模式:獨佔顯示硬體,效能最高,可控制解析度、刷新率、色深。
  2. 視窗模式:在 GDI 視窗中繪圖,相容性好但效能較低。

本系列以全螢幕獨佔模式為主。

四、建立全螢幕獨佔模式的 5 步驟

  1. 列舉硬體裝置:DirectDrawEnumerate 取得所有裝置 GUID,預設主裝置為 NULL。
  2. 建立 DirectDraw 物件:DirectDrawCreate(GUID*, LPDIRECTDRAW*, IUnknown*)。
  3. 取得高版本 COM 介面:QueryInterface(IID_IDirectDraw2, ...) 取得 IDirectDraw2/3/4/7,取得後釋放舊介面。
  4. 設定協作等級:SetCooperativeLevel(HWND, DWORD flags)。獨佔全螢幕旗標組合:
    DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_NOWINDOWCHANGES
  5. 列舉並設定顯示模式:EnumDisplayModes 列舉支援模式,SetDisplayMode(w, h, bpp, refresh, flags) 切換。

五、dx1 範例程式操作流程

介面包含 6 個按鈕,依步驟順序啟用:

  1. 裝置列舉 → 顯示裝置名稱於 ComboBox1
  2. 建立 DD 物件
  3. 取得 IDirectDraw2 介面
  4. 設定協作等級(核取方塊選擇旗標)
  5. 列舉顯示模式 → 顯示於 ComboBox2 (格式: WxHxBPPxRefresh)
  6. 設定顯示模式 → 螢幕立即切換

六、關鍵 API 參數說明

DirectDrawEnumerate 回呼

BOOL WINAPI EnumDeviceCallBack(GUID FAR* lpGUID,
    LPSTR lpDeviceDesc, LPSTR lpDeviceName, LPVOID lpContext);

SetCooperativeLevel 旗標

元件功能
DirectDraw直接存取顯示硬體,管理顯存/系統記憶體,高速 2D 繪圖與翻轉動畫
Direct3D3D 硬體介面
DirectInput輸入裝置支援
DirectSound3D 音效、音效記憶體管理
DirectPlay網路多人遊戲通訊
DirectSetup自動安裝驅動程式
旗標說明
DDSCL_EXCLUSIVE獨佔模式,需搭配 FULLSCREEN
DDSCL_FULLSCREEN全螢幕,需搭配 EXCLUSIVE
DDSCL_NOWINDOWCHANGESDD 不自動最小化/還原視窗
DDSCL_ALLOWMODEX允許 Mode X (320x240x256),需搭配上兩者
DDSCL_ALLOWREBOOT允許熱鍵重開機
DDSCL_NORMAL普通視窗模式

EnumDisplayModes 旗標

  • DDEDM_STANDARDVGAMODES:包含 Mode 13h (320x200x256)
  • DDEDM_REFRESHRATES:列舉不同刷新率模式

七、專案設定提醒

  • 安裝 DirectX 5+ SDK
  • 專案選項 → Directories/Conditionals → Include Path / Library Path 加入 SDK 路徑
  • 原始碼包含 #include "ddraw.h"

總結

掌握「列舉→建立→取得高版介面→設定協作等級→列舉/設定模式」五步驟,即可建立 DirectDraw 全螢幕獨佔環境,為後續圖面操作、動畫、遊戲開發奠基。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved