Аппаратное ускорение растрового рисования в Java

1

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

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

  • 0
    Я удалил Java 3D из тегов, потому что он не связан, и добавил gpu и java 2D.
Теги:
video
gpu
gdi
java-2d

1 ответ

4
Лучший ответ

Чтобы получить жидкую анимацию (если это то, что вы хотите получить), вам нужно использовать двойную буферизацию. Для этого вам нужно будет создать новый 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

  • 0
    Спасибо за ваш вклад и ссылки! Я собираюсь заглянуть в Volatile Images.
  • 0
    В последних версиях Java для Windows теперь используется конвейер DirectX.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню