Estoy escribiendo un juego de pantalla completa en 3D y he creado un menú en el que el usuario puede seleccionar la resolución de pantalla para que coincida con su capacidad de hardware.Distinga entre modos de paneo y pantalla normal en el código - Windows
estoy enumerando todos los modos de pantalla disponibles con EnumDisplaySettingsExA
como esto:
std::vector<DEVMODEA> modes;
DEVMODEA modeInfo;
int modeNum = -1;
while (EnumDisplaySettingsExA(0, ++modeNum, &modeInfo, 0)) {
if (modeInfo.dmBitsPerPel < 16) continue;
modes.push_back(modeInfo);
}
El problema es que estoy recibiendo paneo-modos, así! No puedo distinguir cuáles son cuáles; por ejemplo, mi laptop ATI tiene un modo normal máximo de 1280x800, ¡pero también contiene un modo de panoramización de 1024x600!
¿Alguien sabe de una manera de distinguir entre los 2, por lo que puedo rechazar los modos de panorámica de mi menú?
Por cierto, los campos dmPanningWidth y Height de DEVMODEA son inútiles, siempre devuelven 0. –
¿Qué quiere decir con "panning-mode"? Cuando EnumDisplaySettingsEx devuelve 1024x600, eso significa que el usuario de Windows puede cambiar la configuración de visualización de video a esa resolución, y el monitor probablemente también lo respalde. –
@Chris: se refiere a una resolución que no es compatible con el monitor, generalmente porque es demasiado grande, pero es emulada por la tarjeta gráfica al mostrar solo una parte del escritorio en la pantalla a la vez; mover el mouse al borde de la pantalla lo "desplazará" para mostrar otras partes del escritorio. –