我正在寫一個全屏3D遊戲,並且我創建了一個菜單,用戶可以在其中選擇屏幕分辨率以匹配其硬件容量。區分平移和正常屏幕模式代碼 - Windows
我枚舉所有可用的屏幕模式與EnumDisplaySettingsExA
這樣的:
std::vector<DEVMODEA> modes;
DEVMODEA modeInfo;
int modeNum = -1;
while (EnumDisplaySettingsExA(0, ++modeNum, &modeInfo, 0)) {
if (modeInfo.dmBitsPerPel < 16) continue;
modes.push_back(modeInfo);
}
問題是,我得到搖攝模式以及!我無法區分哪些是哪些;例如我的ATI筆記本電腦的最大正常模式爲1280x800,但也包含1024x600的平移模式!
任何人都知道區分2的方法,所以我可以拒絕我的菜單中的平移模式?
順便說一下,DEVMODEA的dmPanningWidth和Height字段是無用的,它們總是返回0. – 2010-07-23 09:49:57
平移模式是什麼意思?當EnumDisplaySettingsEx返回1024x600時,這意味着Windows用戶可以將視頻顯示設置更改爲該分辨率,並且顯示器也可能支持該分辨率。 – 2011-02-02 18:28:22
@Chris:它指的是顯示器不支持的分辨率,通常是因爲顯示器太大,但通過顯卡一次僅顯示桌面的一部分在顯卡上進行模擬;將鼠標移動到屏幕邊緣將「平移」它以顯示桌面的其他部分。 – 2011-02-02 18:35:16