Merlin的魔力: 练习完全控制图形显示 - 编程入门网
d!”的全屏幕窗口。该示例显示新显示方式的特征,这样您可以看到特定的屏幕大小、刷新频率和色深(bit depth)。
清单 5. 方式更改示例
Merlin的魔力: 练习完全控制图形显示(3)时间:2011-02-02 IBM John Zukowski全屏幕呈现 请注意:在清单 5 中,用于全屏幕的窗口包括了十分有用的 paint() 方法。然而,因为窗口处于全屏幕方式,所以 paint() 方法所需的开销、该方法如何处理剪裁以及其它与显示处理相关的行为都是不必要的。实际上,已经证明了标准的被动呈现开销太大,它减慢了全屏幕应用程序的速度。例如,您不必处理如重叠窗口或调整窗口大小之类的任务。而是可以采取更主动的方法,创建一个处理呈现窗口本身的紧凑循环(tight loop)。 如果您熟悉 双缓冲,那么您知道它在内存中管理两个 Image 对象,并根据哪个对象拥有 当前的显示信息来在这两个对象之间进行交换。在一个 Image 显示的同时,您绘制另一个 Image 并在各个“场景”之间交换 Image 对象。 显卡利用了类似的概念,但不是使用实际的 Java Image 对象,而是交换内存页。当交换内存页时显示就发生更改,所以您不需要将 Image 对象从程序内存复制到显示内存;您只要更改视频指针,显示就会发生更改。尽管现在双缓冲概念仍然存在,但已不是对程序空间中的 Image 进行写操作,而是直接绘制到显示内存空间。 BufferStrategy 类隐藏了使用的是上述两种双缓冲方法中的哪一种这一事实,并且它允许您利用系统所提供的任何基于硬件的缓冲。要创建 BufferStrategy ,使用 createBufferStrategy() 方法告诉系统您所期望的缓冲区数目,并使用 getDrawGraphics() 方法在缓冲区之间进行交换,该方法返回下一个要使用的缓冲区。从概念上讲仅此而已,但如清单 6 所示,工作代码需要花更多的精力: 清单 6. 使用 BufferStrategy
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |