Для чего нужен Полно-экранный режим?
Здесь есть много причин для использования полно-экранного режима:
-изменяя размер окна, вы можете получить больше FPS и производительности от игры.
-удобность. Вы же не любите играть в игры, в маленьком окне.
-хорошая детализация.
Использование Полно-экранного режима
Помните? В предыдущих уроках вы записывали только две строчки:
Code
Display.setDisplayMode(new DisplayMode(width,height));
Display.create();
Здесь в принципе ничего сложного нет, вместо двух строчек нужно писать три эти:
Code
Display.setDisplayMode(displayMode);
//если вместо true написать false, полноэкранный режим работать не будет
Display.setFullscreen(true);
Display.create();
Что такое DisplayMode?
DisplayMode - класс, который инкапсулирует различные свойства. Он включает следующие свойства :
Code
getWidth() //ширина показа в пикселях
getHeight() //высота показа в пикселях
getBitsPerPixel() //куски пикселя, также иногда известный как число цветов
getFrequency() // частота обновления или частота рисунка рамки
Начальная DisplayMode будет таким же, как разрешение настольных компьютеров. Оригинальное разрешение рабочего стола можно получить в любое время с помощью DisplayMode Display.getDesktopDisplayMode ().
Получение DisplayModes поддерживается в полноэкранном режиме
Список полноэкранных разрешений, поддерживаемое видеокартой можно получить с помощью Display.getAvailableDisplayModes () метод.
Code
DisplayMode[] modes = Display.getAvailableDisplayModes();
for (int i=0;i<modes.length;i++) {
DisplayMode current = modes[i];
System.out.println(current.getWidth() + "x" + current.getHeight() + "x" +
current.getBitsPerPixel() + " " + current.getFrequency() + "Hz");
}
DisplayMode задается с помощью Display.setDisplayMode (). Если дисплей уже был создан, то дисплей будет изменяться сразу в соответствии с новым DisplayMode, в противном случае он будет применяться один раз Display.create () называется=).
В настоящее время DisplayMode можно получить c gjvjom. Display.getDisplayMode (), если не установлен DisplayMode, он будет таким же, как и Display.getDesktopDisplayMode ().
Display.setFullscreen (логический) метод может быть использован для переключения в полноэкранный режим или обратно в оконный режим.
Значение BitsPerPixel имеет в значительной степени в эти дни либо 32-битный цвет (Windows) или 24-битный цвет (Linux и Mac). Иногда можно найти компьютеры, которые все еще используют старые 16-битные, 256 цветов или даже 16 цветовых режимов. Соответственно, это хорошая идея, чтобы просто взять и использовать цвет рабочего стола по умолчанию.
Частота значение скорости, с которой кадры взяты. Опять его хорошая идея, чтобы просто использовать частоты рабочего стола по умолчанию, как ее чаще поддерживается монитором (даже если видеокарта поддерживает другие). ЭЛТ-мониторы могут легко поддерживать различные частоты и частоту обновления, но с TFT-мониторы сейчас становятся все более распространенными лучше всего придерживаться по умолчанию.
Удобный метод переключать разрешение
Используя приведенную выше информацию следующий метод является примером, который позволит найти и переход к DisplayMode.
Code
//Устанавливает режим отображения, которые будут использоваться
public void setDisplayMode(int width, int height, boolean fullscreen) {
// возвращаемся назад, если DisplayMode уже задан.
if ((Display.getDisplayMode().getWidth() == width) &&
(Display.getDisplayMode().getHeight() == height) &&
(Display.isFullscreen() == fullscreen)) {
return;
}
try {
DisplayMode targetDisplayMode = null;
if (fullscreen) {
DisplayMode[] modes = Display.getAvailableDisplayModes();
int freq = 0;
for (int i=0;i<modes.length;i++) {
DisplayMode current = modes[i];
if ((current.getWidth() == width) && (current.getHeight() == height)) {
if ((targetDisplayMode == null) || (current.getFrequency() >= freq)) {
if ((targetDisplayMode == null) || (current.getBitsPerPixel() > targetDisplayMode.getBitsPerPixel())) {
targetDisplayMode = current;
freq = targetDisplayMode.getFrequency();
}
}
// if we've found a match for bpp and frequence against the
// original display mode then it's probably best to go for this one
// since it's most likely compatible with the monitor
if ((current.getBitsPerPixel() == Display.getDesktopDisplayMode().getBitsPerPixel()) &&
(current.getFrequency() == Display.getDesktopDisplayMode().getFrequency())) {
targetDisplayMode = current;
break;
}
}
}
} else {
targetDisplayMode = new DisplayMode(width,height);
}
if (targetDisplayMode == null) {
System.out.println("Failed to find value mode: "+width+"x"+height+" fs="+fullscreen);
return;
}
Display.setDisplayMode(targetDisplayMode);
Display.setFullscreen(fullscreen);
} catch (LWJGLException e) {
System.out.println("Unable to setup mode "+width+"x"+height+" fullscreen="+fullscreen + e);
}
}