JREGC

Главная | Регистрация | Вход Приветствую Вас Инопланетяне | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: wawe  
Форум » PROGRAMMING CATEGORY » Уроки LWJGL » LWJGL Основы 5 (Полный Экран)
LWJGL Основы 5 (Полный Экран)
waweДата: Вторник, 07.08.2012, 16:33 | Сообщение # 1
Просто человек...
Группа: Администраторы
Сообщений: 50
Награды: 3
Статус: Offline
Для чего нужен Полно-экранный режим?
Здесь есть много причин для использования полно-экранного режима:
-изменяя размер окна, вы можете получить больше 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);
     }
}
 
Форум » PROGRAMMING CATEGORY » Уроки LWJGL » LWJGL Основы 5 (Полный Экран)
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024
Используются технологии uCoz