硬件加速java中的位图绘制

我希望能够在java中尽快绘制video的连续位图(类型为BufferedImage.TYPE_INT_RGB)。 我想知道这样做的最佳方法。 有没有人有任何建议我应该从哪里开始? 根据我的阅读,有两个选项:1)在使用JAWT的JNI dll中使用GDI / GDI +例程(我在Windows上)2)使用Java3D并将Textures应用到Box的脸部并将其旋转到相机

我对这些主题以及其他任何建议都很感兴趣。 当我创建一个ActiveX控件时,我在VB中做了大量的GDI / GDI +编程,所以使用GDI应该是无痛的,但我猜测Java3D会更多地利用GPU(我可能会错)并提供更好的性能。 你怎么看? GDI和JAWT与我以前的经验,或者与Java3D一起开始和新的API之旅。 提前致谢。 🙂

要获得流畅的动画(如果它想要获得),您需要使用双缓冲。 为此,您需要为要显示的每个帧创建一个新的java.awt.Image(或者像BufferedImage这样的子类,或者如果您想要OpenGL加速处理,VolatileImage)。 如果您还没有这样做,请调用Image.getGraphics()以获取java.awt.Graphics对象(对于将您的内容添加到Image中也很有用)。 最后,当您隐藏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

Interesting Posts