J'écris un jeu 3D plein écran et j'ai créé un menu dans lequel l'utilisateur peut sélectionner la résolution d'écran pour correspondre à sa capacité matérielle.Distinguer entre les modes de panoramique et d'écran normal dans le code - Windows
J'énumérais tous les modes d'écran disponibles avec EnumDisplaySettingsExA
comme ceci:
std::vector<DEVMODEA> modes;
DEVMODEA modeInfo;
int modeNum = -1;
while (EnumDisplaySettingsExA(0, ++modeNum, &modeInfo, 0)) {
if (modeInfo.dmBitsPerPel < 16) continue;
modes.push_back(modeInfo);
}
Le problème est, je reçois balayage panoramique modes aussi bien! Je ne peux pas distinguer qui sont qui; par exemple mon ordinateur portable ATI a un mode normal maximum de 1280x800, mais contient également un mode panoramique de 1024x600! Tout le monde connaît un moyen de faire la distinction entre les 2, donc je peux rejeter les modes de panoramique de mon menu?
BTW, les champs dmPanningWidth et Hauteur de DEVMODEA sont inutiles, ils retournent toujours 0. –
Que voulez-vous dire par mode panoramique? Lorsque EnumDisplaySettingsEx renvoie 1024x600, cela signifie que l'utilisateur Windows peut modifier les paramètres d'affichage vidéo à cette résolution, et le moniteur le supportera probablement aussi. –
@Chris: Cela fait référence à une résolution qui n'est pas supportée par le moniteur, généralement parce qu'elle est trop grande, mais émulée par la carte graphique en affichant seulement une partie du bureau sur l'écran à la fois; déplacer la souris sur le bord de l'écran "pan" pour montrer d'autres parties du bureau. –