我已经创建了我自己的 Canvas ,该 Canvas 是从 JPanel 扩展而来的,但是我注意到带有内容等等,突然间我的 FPS 受到了影响。我遵循 Filthy Rich Clients 的 swing 规则,使用 paintComponent,创建剪辑区域,仅重绘已更改的内容,等等。我将 FPS 设置为恒定的 50 FPS,我注意到有时我的 FPS 会跳到 31/32 FPS,然后回到 50 FPS,依此类推。在运行我的程序时,它只使用了大约 25MB 的 RAM 和 0 的 CPU,即使在渲染时也是如此。我也有 OpenGL 设置。
注意:我没有图像,这是严格使用图形中的形状。
在 JPanel 上绘制所有内容是否会对性能造成重大影响?我应该扩展一个不同的组件吗(我一直看到 Canvas 组件)?在 JPanel 中构建俄罗斯方 block (或任何其他复古游戏)之类的游戏有多“聪明”?
这可能是计时器问题,因为我刚刚添加了 100 个额外的绘画调用,而 FPS 仍然执行 50 32/31 的操作。
最佳答案
经过大量调查,我发现问题根本不是 JPanel 的问题。事实上,问题出在java中的Timer上。它不是 100% 准确,这导致 FPS 偏差很大。我解决这个问题的方法是阅读这个:koonsolo.com/news/dewitters-gameloop
关于java - 在 Java2D 中绘制子类的哪个组件(对于 2D 游戏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5710356/