Java 硬件加速
我花了一些时间研究Java的硬件加速功能,我仍然有点困惑,因为我在网上找到的任何网站都没有直接清楚地回答我的一些问题。因此,以下是我对Java中硬件加速的问题:
1)在Eclipse版本3.6.0中,使用Mac OS X的最新Java更新(我认为是1.6u10),默认情况下是否启用硬件加速?我在某处读到
someCanvas.getGraphicsConfiguration().getBufferCapabilities().isPageFlipping()
应该指示是否启用了硬件加速,并且我的程序在我的主Canvas实例上运行以进行绘制时会报告为true。如果现在或默认情况下未启用硬件加速,我需要执行哪些操作才能启用它?
2)我在这里和那里看到了几篇关于BufferedImage和Vol volatileImage之间区别的文章,主要是说VolvocationImage是硬件加速图像,存储在VRAM中以进行快速复制操作。但是,我也发现了一些实例,其中BufferedImage也被称为硬件加速。BufferedImage 硬件是否也在我的环境中加速?如果两种类型都是硬件加速的,那么使用Vol volatileImage有什么好处?我对在两者都具有加速度的情况下具有VolquilImage的优势的主要假设是,VolatileImage能够检测到其VRAM何时被转储。但是,如果BufferedImage现在也支持加速,那么它是否也内置了相同类型的检测,只是对用户隐藏,以防内存被转储?
3)使用有什么好处吗
someGraphicsConfiguration.getCompatibleImage/getCompatibleVolatileImage()
与
ImageIO.read()
在我一直在阅读的教程中,关于正确设置渲染窗口的一些一般概念(教程),它使用getCompatibleImage方法,我相信它返回一个BufferedImage,以获得他们的“硬件加速”图像以进行快速绘制,这与问题2有关它是否是硬件加速的。
4)这是较少的硬件加速,但这是我一直好奇的事情:我需要订购绘制哪些图形吗?我知道,当通过C / C++使用OpenGL时,最好确保在需要同时绘制的所有位置绘制相同的图形,以减少需要切换当前纹理的次数。从我所读到的内容来看,似乎Java会为我处理这个问题,并确保以最佳方式绘制内容,但同样,从来没有人清楚地说过这样的话。
5) 哪些 AWT/Swing 类支持硬件加速,应该使用哪些类?我目前正在使用一个扩展JFrame的类来创建一个窗口,并向其添加一个Canvas,从中创建一个BufferStrategy。这是很好的做法,还是我应该实现这种方式的其他类型的方法?
非常感谢您抽出宝贵时间,我希望我提供了明确的问题和足够的信息,以便您回答我的几个问题。