2010-11-14 77 views
1

我希望能夠儘快在java中繪製視頻的連續位圖(類型爲BufferedImage.TYPE_INT_RGB)。我想知道這樣做的最佳方法。有沒有人有我應該開始的建議?從我讀過的內容來看,有兩個選項: 1)在JNI DLL中使用GDI/GDI +例程(與Windows一起使用) 2)使用Java3D並將紋理應用到Box的表面並將其旋轉到相機硬件加速在java中的位圖繪製

我對這些主題以及任何其他建議的任何建議感興趣。我在VB中創建了一個ActiveX控件,所以使用GDI應該是無痛的,但我猜測Java3D會更多地利用GPU(我可能是錯的),並提供更好的性能。你怎麼看? GDI和JAWT與我以前的經驗,或Java3D開始和新的API之旅。 在此先感謝。 :)

+0

我從標籤移除Java 3D的,因爲它是不相關的,並增加了GPU和Java 2D。 – 2010-11-19 23:32:23

回答

4

要獲得流體動畫(如果它是你想得到的),你需要使用雙緩衝。爲此,您需要爲每個要顯示的幀創建一個新的java.awt.Image(或像BufferedImage這樣的子類,或者如果您希望OpenGL加速處理,則使用VolatileImage)。如果您還沒有這樣做,請調用Image.getGraphics()以獲取java.awt.Graphics對象(也可以將您的內容添加到Image中)。最後,當你隱藏圖像完成時,調用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

感謝您的輸入和鏈接!我要看看易變的圖像。 – Xiphias3 2010-11-15 01:53:42

+0

現在,Windows上Java的最新版本正在使用DirectX管道。 – 2013-01-03 10:08:34