【发布时间】:2011-09-03 17:37:22
【问题描述】:
我正在将一个非常旧的 AWT 游戏移植到一个非常糟糕的新设备上。
游戏有一大堆问题,包括非常松懈的线程安全方法:游戏引擎试图使用从 UI 线程获得的图形上下文在其引擎线程中直接绘制到屏幕上。这在设备上不起作用。
我已经设法让它正常工作,方法是让引擎线程绘制到屏幕外缓冲区,然后让 UI 线程定期调用显示组件上的 repaint(),然后显示组件将缓冲区传送到屏幕上,但性能很差 --- 考虑到所有上下文切换和双缓冲,这并不奇怪。
我实际上并不是一个特别博学的 AWT 程序员。到目前为止我一直避免它,这已经足够可恨了。但是这个问题——有一个引擎线程想要在屏幕上绘制——一定是一个常见的问题。有没有人知道如何以安全的方式做到这一点的任何体面的策略(最好是示例代码!),从而尽可能多地从系统中挤出性能?
(我特别喜欢的是一个安全的快捷方式,允许引擎线程在感觉准备好时直接渲染到屏幕图形上下文上,从而避免必须告诉 UI 线程请求重绘。那会让我拿出一整层双缓冲。但我不知道这样的事情是否可能......)
这一切都在 PBP 1.1.2 上 --- 是的,它既不是完整的 Java 也不是诚实的 MidP...
【问题讨论】: