我从事 Java 2D 游戏已经有一段时间了。它是一个带有像素(整数)数组的光栅图形系统。
private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
然后,我分别创建一个整数数组,使用屏幕对象(从外部图像文件,如 .png 渲染)对其进行操作,然后将该数组复制到我的主数组中,该数组投影在屏幕上。我发现在迭代中使用数组复制方法没有性能差异(并且真的没想到)。无论如何,图形渲染良好,游戏进展顺利。
但是,我发现这非常占用 CPU。我的活动监视器说应用程序正在使用超过 100% 的 CPU。这显然是因为我每次更新(每秒 60 次)都遍历一个像素数组(76k 整数)。
我选择这种技术是出于教育目的。这是一个个人项目,我只是想深入了解 Java 图形。我绝不会嫁给这种渲染技术。
我的问题分为三个相关部分......
- 显然有更好的方法来做到这一点。哪些库/框架会做得更好?
- 这些库本质上会做同样的事情(循环遍历像素),只是以更有效的方式吗?
- 有没有一种方法可以在不使用外部工具的情况下优化这项技术,还是不值得?