2010-11-14 1 views
1

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

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

+0

Я удалил Java 3D из тегов, потому что это не связано, и добавил видеочипа и Java 2D. –

ответ

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. – Xiphias3

+0

Последние версии Java в Windows теперь используют конвейер DirectX. –