Может ли Java2D работать так же быстро, как LWJGL и JOGL? - PullRequest
4 голосов
/ 21 марта 2011

Я слышал, что Java2D использует OpenGL за кулисами для рендеринга, и я подумал, стоит ли использовать JOGL и все его нативные библиотеки для моей программы, которая представляет собой просто 2D боковой скроллер.Я слышал, что есть определенные методы, которые вы должны использовать, и сценарии, которых вы должны избегать, чтобы убедиться, что используется аппаратное ускорение, но я не знаю, каковы они (ну, я знаю несколько, но мне еще предстоитнайти полный список из них.).

Ответы [ 4 ]

5 голосов
/ 21 марта 2011

Как человек, который совместно разработал 2D казуальную игру на Java с использованием LWJGL , я рекомендую не использовать LWJGL или JOGL, если вы собираетесь делать казуальную игру.

Плюсы:

  • Упрощенная запись движка: OpenGL имеет высокую скорость заполнения, что означает, что вы можете перерисовывать экран каждый кадр.
  • Возможность создания крутых 3D-эффектов.

Минусы:

  • Всем пользователям нужна 3D-карта.
  • Всем пользователям необходимо установить драйвер OpenGL. Windows 7 не поставляется с какими-либо установленными драйверами OpenGL (посмотрите «1018 * пиксельный формат не ускорен » в Google, чтобы увидеть, к чему это приводит).
  • 3D-карты питаются от батареи, особенно на старых ноутбуках. Люди часто играют в казуальные игры на ноутбуках, поэтому это может быть проблемой.
  • Апплетам требуются дополнительные разрешения для использования 3D-карты. Это приводит к появлению страшного диалогового окна с разрешениями, которое пользователь должен щелкнуть, чтобы играть в вашу игру, если только вы не хотите купить сертификат на 500 долларов.

Я бы порекомендовал использовать для разработки вашей игры инфраструктуру рендеринга и анимации Java2D, например PulpCore . Я хотел бы, чтобы мы имели.

4 голосов
/ 05 октября 2011

Существуют библиотеки, которые вы можете добавить, чтобы нарисовать Java2D в OpenGL. GLG2D (моя библиотека) делает это.Это зависит от JOGL и переводит все вызовы java.awt.Graphics2D в вызовы OpenGL.

Рисование линий, особенно кривых, может быть очень медленным в Java2D.

3 голосов
/ 21 марта 2011

Краткий ответ, нет.В Java2D просто слишком много слоев раздувания, чтобы оно было так же быстро, как приложение LWJGL или JOGL.

0 голосов
/ 03 ноября 2011

Вы можете включить аппаратное ускорение в Java2D, но даже в этом случае оно все еще медленнее (и иногда глючит), чем любое связывание Java для OpenGL (JOGL, LWJGL).Если вы хотите лучшего из обоих, взгляните на GLG2D, как предложил Брэндон выше.Помните, что Java2D - это API высокого уровня, тогда как JOGL - это привязка низкого уровня.Вы можете использовать API высокого уровня, опираясь на эти низкоуровневые привязки OpenGL, например, JGame, Slick и LibGDX.

...