繁体   English   中英

使用Java Swing从Sprite图纸绘制的最佳性能选项

[英]Best performance option for drawing from a sprite sheet using Java Swing

我正在使用Java创建类似roguelike的图形游戏。 在游戏中,我正在将2D Tile对象数组绘制到JPanel上。 这些Tile对象代表地面。 我有一个.bmp Sprite工作表,其中包含我想用来绘制的所有纹理。 每次玩家移动时,都需要重绘玩家可见的磁贴。

我的问题是性能问题。 过去,我已经实现了这一点,我将Tiles扩展为JPanel,并且每个Tile仅使用bufferedImage.getSubImage()显示了子画面的适当部分,而父级JPanel只是在所有Tiles中调用了paint() 2d数组。 这对于上一个项目中的30x20小型地图效果很好,但我不确定它是否可以在当前游戏中使用。

我应该使用相同的方法还是要解决其他一些可能加快绘制时间的解决方案? Tile类是否应该扩展某些其他Swing或AWT组件,例如BufferedImage,否则不会起作用?

谢谢。

您可以为电路板使用单个组件(而不是每个图块一个),并让其处理每个图块的绘制。 单独的渲染器可以处理单独的瓷砖绘画,以使解决方案更具模块化。 这是JTable及其单元格呈现所使用的类似方法。

对于getSubImage()的性能不确定,可能值得在前面提取(并缓存)单个图像。

还请仅查看更改的重新绘制单元格(如果尚未更改)。

这款基于图块的游戏在大屏幕上可正常播放:1900x1200像素,60x36图块。 将图像缩放到目标矩形似乎消耗了大部分渲染预算。 还有更多的讨论在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM