При разработке 2D-игр на Java большинство учебных пособий создают стратегию буферизации для рендеринга. Это имеет смысл. Однако то, что люди, кажется, искажают, - это метод отрисовки фактической графики в буфер.
В некоторых руководствах создается буферизованное изображение, а затем создается целочисленный массив для представления отдельных цветов пикселей.
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, а вместо этого используют компонент Graphics в BufferStrategy для рисования своих изображений непосредственно в буфере.
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?
Я искал это часами, и все сайты, которые я видел, просто объясняли, что они делают, а не почему они решили сделать это именно так.