在 Java 中进行 2D 游戏开发时,大多数教程都会创建一个缓冲策略来渲染。这很有意义。然而,人们似乎偏向于将实际图形绘制到缓冲区的方法。
一些教程创建一个缓冲图像,然后创建一个整数数组来表示各个像素颜色。
private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
Graphics g = bs.getDrawGraphics();
g.setColor(new Color(0x556B2F));
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
然而,其他一些教程不会创建缓冲图像,将像素绘制到 int 数组,而是使用 BufferStrategy 的 Graphics 组件将其图像直接绘制到缓冲区。
Graphics g = bs.getDrawGraphics();
g.setColor(new Color(0x556B2F));
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(testImage.image, x*128, y*128, 128, 128, null);
我只是想知道,为什么要创建整个 int 数组,然后绘制它。这需要在实现矩形、拉伸、透明度等方面做更多的工作。缓冲区策略的图形组件已经有了可以轻松调用的方法。使用 int 数组是否有一些巨大的性能提升?
我已经查了好几个小时了,我看到的所有网站都只是解释了他们在做什么,而不是为什么他们选择这样做。