Так что я пытался заставить настройку разрешения работать в моей игре некоторое время, но безрезультатно.У меня есть соотношение 16: 9, которое я пытаюсь сохранить постоянным.Я использую SDL с openGL.И вот мой изменяющийся класс разрешения:
#ifndef _RESOLUTION_CPP_
#define _RESOLUTION_CPP_
#include "Main.h"
class Resolution{
public:
static void ChangeResolution(SDL_Surface* Screen,int Width,int Height, bool FullScreen){
int Full = 0;
if(FullScreen){
Full = SDL_FULLSCREEN;
}
Screen = SDL_SetVideoMode(Width , Height, 32, SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL| Full);
glClearColor(0, 0, 0, 0);
glClearDepth(1.0f);
glViewport(0, 0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//glOrtho(0, Width, Height, 0, 1, -1);
glOrtho(0, 960,540, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glLoadIdentity();
}
};
#endif
Сначала я настроил масштабирование glOrtho вместе с размером окна и портом просмотра, но это заставило меня видеть больше экрана по мере увеличения размера окна,что было не то, что я хотел.Таким образом, установив камеру (glOrtho похожа на камеру, верно?) При постоянной ширине и высоте я всегда мог видеть одну и ту же часть экрана.Пока все хорошо.
Теперь, пробуя игру в оконном режиме, все работает точно так, как должно.Графика игры масштабируется с сохранением соотношения сторон, и я всегда вижу одну и ту же часть экрана.
Теперь пробую полноэкранный режим на мониторе 5: 4, вот что я получаю:
Слева: 960x540 --- Посередине: 1024x576 --- Справа: 1200x675
Как видите, только тот, что посередине, работает как надо, он растянут дозаполнить экран, но не растягивать, чтобы разрушить соотношение сторон.Тот, что слева, сохраняет соотношение сторон, но недостаточно масштабируется.
Тот, что справа растягивается вертикально, а пропорции нарушаются.Это почему?Почему он так растягивается?
Кроме того, как бы я отцентрировал экран так, чтобы на среднем мониторе было черное пространство сверху и снизу, а не только одно большое сверху??
Дополнительная информация:
Когда я пробую это на ноутбуке 16:10, я получаю аналогичные результаты, когда экран недостаточно масштабирован или не центрирован, ноэто никогда не растягивалось.Даже установив его на огромное разрешение 1920,1080.Он точно масштабируется больше, чем экран, так что я вижу только небольшую часть, но я предполагаю, что вы не сможете реально сжать 1920x1080 при гораздо меньшем разрешении.
Итак, мой вопрос на самом деле: почему разрешение проблемы совершенно непредсказуемо?Иногда он растягивается, иногда недостаточно масштабируется и т. Д., И как мне это исправить?