Аппаратное ускорение растрового рисования в Java - PullRequest
1 голос
/ 14 ноября 2010

Я хочу иметь возможность рисовать последовательные растровые изображения (типа BufferedImage.TYPE_INT_RGB) видео как можно быстрее в Java. Я хочу знать лучший метод в этом. У кого-нибудь есть совет, с чего мне начать? Из того, что я прочитал, 2 варианта: 1) Используйте подпрограммы GDI / GDI + в dll JNI, работающем с JAWT (я на Windows) 2) Используйте Java3D и примените текстуры к лицу бокса и поверните его к камере

Мне интересны любые советы на эти темы, а также любые другие. Я сделал приличный объем программирования GDI / GDI + на VB, когда создал элемент управления ActiveX, поэтому использование GDI должно быть безболезненным, но я предполагаю, что Java3D будет больше использовать графический процессор (я могу ошибаться) и повысить производительность. Как вы думаете? GDI и JAWT с моим предыдущим опытом, или начать и новое путешествие по API с Java3D. Заранее спасибо. :)

1 Ответ

4 голосов
/ 14 ноября 2010

Чтобы получить плавную анимацию (если это то, что вы хотите получить), вам нужно использовать двойную буферизацию.Для этого вам нужно будет создать новый java.awt.Image (или подкласс, такой как BufferedImage, или, если вам нужна ускоренная обработка OpenGL, VolatileImage) для каждого кадра, который вы хотите отобразить.Если вы еще этого не сделали, вызовите Image.getGraphics (), чтобы получить объект java.awt.Graphics (также может быть полезно добавить ваш контент в изображение).В конце, когда скрытое изображение завершено, вызовите Graphics.draw (), чтобы плавно заменить текущее отображение.

VolatileImage ускорено OpenGL и намного быстрее.Когда вызывается VolatileImage.getGraphics (), он на самом деле возвращает Graphics2D, который также является частью ускоренного графического конвейера.

Он работает в Windows, Linux и Solaris, но вам необходимо установить драйверы OpenGL для вашегографическая карта.

Некоторые дополнительные ссылки:

Ускоренный графический конвейер:

http://download.oracle.com/javase/1.5.0/docs/guide/2d/new_features.html

http://www.javalobby.org/forums/thread.jspa?threadID=16840&tstart=0

Двойная буферизация:

http://www.java2s.com/Code/Java/2D-Graphics-GUI/Smoothmoveusingdoublebuffer.htm

http://www.heatonresearch.com/articles/23/page2.html

http://www.javacooperation.gmxhome.de/BildschirmflackernEng.html

...