在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);
Run Code Online (Sandbox Code Playgroud)
但是,其他一些教程不会创建缓冲图像,将像素绘制到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);
Run Code Online (Sandbox Code Playgroud)
我只是想知道,为什么要创建整个int数组,然后绘制它.这需要在实现矩形,拉伸,透明度等方面做更多的工作.缓冲策略的图形组件已经具有可以轻松调用的方法.使用int数组有一些巨大的性能提升吗?
我已经看了几个小时,我看到的所有网站都只是解释了他们在做什么,而不是为什么他们选择这样做.