2009-03-02 14 views
16

Estoy buscando hacer algunas simulaciones de física y necesito renderización rápida en Java.¿Cuáles son algunas alternativas más rápidas a Java2d?

He tenido problemas de rendimiento con Java2d en el pasado, entonces, ¿cuáles son las alternativas rápidas? ¿JOGL es significativamente más rápido que Java2d?

+0

http://stackoverflow.com/questions/148478/java-2d-drawing-optimal-performance y http://stackoverflow.com/questions/196890/java2d-performance-issues pueden ser útiles. –

+0

De hecho, creo que antes de la edición, esta pregunta podría haber sido un duplicado. No creo que sea ahora, sin embargo. –

+0

¿Has probado la última actualización de JDK 6? – Eddie

Respuesta

11

Mi experiencia con Java2D es que puede ser muy rápido si sigue las reglas. Tuve una aplicación que pasó de 90% CPU a menos de 5% CPU simplemente cambiando algunas cosas simples. El uso de grandes PNG transparentes es un no no, por ejemplo.

Un recurso muy bueno es el de los foros de Java-Gaming.org: mucha gente, incluidos los especialistas de Sun 2D, se juntan y brindan muchos ejemplos y soluciones a problemas de rendimiento para el dibujo en 2D.

Ver: http://www.javagaming.org/ y luego el tema "Ajuste del rendimiento".

4

No sé - en el pasado hubiera dicho que sí, especialmente si utiliza listas de visualización en lugar de hacer muchas llamadas a través de la API cada vez que se muestra la pantalla. Pero la actualización 10 de la 1.6 JVM agregó gráficos acelerados de Java2D, por lo que ahora puede tener la ventaja. Realmente, la única forma de saberlo con certeza es tratar de representar escenas típicas en ambos y medirlas.

5

JOGL puede ser mucho más rápido que Java2D, incluso si lo usa solo para hacer gráficos 2D: como mencionó Clayworth, generalmente depende de lo que necesite hacer.

Supongo que para simulaciones físicas 2D, donde tiene objetos (texturizados o no texturizados) girando y traduciendo con 2 grados de libertad, JOGL debe proporcionar el mejor rendimiento y también le permite proporcionar una interfaz ampliable. Aquí hay un tutorial para OpenGL para gráficos 2D (C, pero se adapta fácilmente a JOGL).

JOGL tomará un poco más de tiempo para aprender que Java2D, pero lograr un buen rendimiento probablemente no requiera optimizaciones especializadas como en Java2D.

+1

+1 para usar JOGL para 2D. Hago esto todo el tiempo en el trabajo y realmente saca a Java2D del agua, especialmente para pantallas densas y mezclas alfa. Además de todo eso obtienes sombreadores GLSL que son increíblemente poderosos. – basszero

2

También consulte Slick, que se basa en LWJGL y es en cierto modo similar a Java2D. Utiliza OpenGL y, por lo tanto, es mucho más rápido.

Cuestiones relacionadas