Я работаю над проектом игры libGDX (библиотека поверх LWJGL) и использую IDE Intellij IDEA с нескольких разных рабочих станций:
- Ноутбук Windows 7 x64 с двумя дисплеями (1920x1080 и 1600x1200), nVidia GT540M.
- Ubuntu 12.04 LTS на ноутбуке с одним дисплеем (1366x768), интегрированной графикой Intel.
- Ubuntu 12.04 LTS на рабочем столе с двумя дисплеями (1920x1080 и 1280x1024), nVidia GTS 450.
Я использую OpenJDK для Java 6 в блоках Ubuntu и Sun/Oracle Java 6 в окне Windows (я слышал, что Java 6 был тем, который использовался для совместимости с Android).
При работе в полноэкранном режиме:
- Ноутбук Windows 7: отлично работает.
- Ноутбук Ubuntu: отлично работает.
- Рабочий стол Ubuntu: фоновое изображение отображается увеличенным, и только часть его подходит на экране. +
Внимательно изучая это, я вижу, что вызовы Gdx.graphics.getHeight() и Gdx.graphics.getWidth() возвращают размер прямоугольника, необходимого для покрытия обоих дисплеев, в моем случае 3200x1080, но когда я говорю моя игра для запуска полноэкранного режима, она использует только один из дисплеев, поэтому камеры устанавливаются на 1920x1080, но мое движение камеры и панорамирование карты Tiled считают, что у них есть 3200x1080 для работы, что делает вещи искаженными и непригодными (поскольку персонаж может выйти из экрана вправо).
Я предполагаю, что моя проблема на самом деле происходит из размеров, возвращаемых вызовом awt.Toolkit getScreenSize(), но я не знаю, как допросить его более глубоко, чтобы получить размер экрана, который он фактически будет использовать, когда я перейти в полноэкранный режим.
Мой DesktopStarter получает размер экрана и устанавливает полноэкранный режим следующим образом:
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
cfg.width = screenDimension.width;
cfg.height = screenDimension.height;
cfg.fullscreen = true;
new LwjglApplication(new Game1(), cfg);
Есть ли рабочая среда, чтобы получить высоту/ширину всего экрана, на котором фактически запущен "полный экран"?
Таким образом, проблема, которую я вижу, заключается в том, что выполнение файла game.jar, выход из игры, а затем повторное выполнение, приводит к появлению разных режимов отображения, отображаемых в списке режимов, возвращаемых Gdx.graphics.getDisplayModes( ) - как PT как показано ниже, это тонкая обертка вокруг LWJGL Display.getAvailableDisplayModes()
. Почему это происходит? Почему это будет другой набор режимов, представленных на последующих запусках на Ubuntu?
изменить: за P.T. предложите ссылки на LWJGL, поскольку LWJGL, как представляется, предоставляет список режимов отображения.
Спасибо!