2009-03-02 3 views
16

Я ищу некоторые физические симуляции, и мне нужен быстрый рендеринг на Java.Каковы некоторые более быстрые альтернативы Java2d?

Я столкнулся с проблемами производительности с Java2d в прошлом, так какие быстрые альтернативы? Является ли JOGL значительно быстрее, чем Java2d?

+0

http://stackoverflow.com/questions/148478/java-2d-drawing-optimal-performance и http://stackoverflow.com/questions/196890/java2d-performance-issues может быть полезно. –

+0

На самом деле, я думаю, что до редактирования этот вопрос мог быть дубликатом. Я не думаю, что это сейчас. –

+0

Вы пробовали последнее обновление JDK 6? – Eddie

ответ

11

Мой опыт работы с Java2D заключается в том, что он может быть очень быстрым, если следовать правилам. У меня было приложение, которое перешло с 90% процессора на процессор менее 5%, просто изменив несколько простых вещей. Например, использование больших прозрачных PNG - нет.

Очень хороший ресурс - это форумы Java-Gaming.org: многие люди, в том числе специалисты Sun 2D, выходят туда и предоставляют множество примеров и решений проблем производительности для 2D-чертежа.

См.: http://www.javagaming.org/, а затем раздел «Настройка производительности».

4

Я не знаю, в прошлом я бы сказал, да, особенно если вы используете списки отображения, а не много вызовов через API каждый раз, когда отображается экран. Но обновление 10 из 1.6 JVM добавило ускоренную графику Java2D, поэтому может иметь преимущество сейчас. На самом деле единственный способ узнать наверняка - попытаться отобразить типичные сцены в обоих и измерить его.

5

JOGL может быть намного быстрее, чем Java2D, даже если вы используете его только для 2D-графики: как упоминал Клейворт, он обычно зависит от того, что вам нужно делать.

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

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

+1

+1 для использования JOGL для 2D. Я делаю это все время на работе, и он действительно удаляет Java2D из воды, особенно для плотных дисплеев и альфа-смешивания. Кроме всего прочего вы получаете шейдеры GLSL, которые потрясающе мощны. – basszero

2

Также ознакомьтесь с Slick, который основан на LWJGL и в некотором роде похож на Java2D. Он использует OpenGL и, таким образом, значительно быстрее.

Смежные вопросы