gpt4 book ai didi

java - 使用 Java Swing 从 sprite 表绘图的最佳性能选项

转载 作者:行者123 更新时间:2023-12-01 19:24:11 24 4
gpt4 key购买 nike

我正在使用 Java 创建一款图形 Roguelike 游戏。在游戏中,我将 Tile 对象的二维数组绘制到 JPanel 上。这些 Tile 对象代表地面。我有一个 .bmp Sprite 表,其中包含我想要用于绘画的所有纹理。每次玩家移动时,玩家可见的图 block 都需要重新绘制。

我的问题是性能问题。我过去已经实现了这一点,让 Tiles 扩展 JPanel,每个 Tile 仅使用 bufferedImage.getSubImage() 显示 Sprite 表的适当部分,而父 JPanel 只需在所有 Tiles 上调用 Paint()二维数组。这对于之前项目中的小型 30x20 map 效果很好,但我不确定它是否适用于当前的游戏。

我应该使用相同的方法还是有其他可能的解决方案来加快绘制时间? Tile 类是否应该扩展一些其他 Swing 或 AWT 组件(例如 BufferedImage),或者不会产生效果?

谢谢。

最佳答案

您可以为棋盘使用单个组件(而不是每个图 block 一个)并让它处理每个图 block 的绘制。单独的渲染器可以处理单独的图 block 绘制,使解决方案更加模块化。这与 JTable 及其单元格的呈现使用的方法类似。

不确定 getSubImage() 的性能,可能值得预先提取(并缓存)单个图像。

另外,仅查看重新绘制发生变化的单元格(如果您还没有这样做)。

关于java - 使用 Java Swing 从 sprite 表绘图的最佳性能选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com