В настоящее время я слежу за серией статей о разработке игр на Java с нуля. Я понимаю большинство концепций java и oop, но у меня очень мало опыта работы с графикой и аппаратным ускорением.
Строки кода, которые я подвергаю сомнению:
private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
Переменная «изображение» BufferedImage всегда является переменной, рисуемой на экране с помощью метода рендеринга. Обычно что-то вроде:
public void render() {
BufferStrategy bs = this.getBufferStrategy;
if(bs == null) { this.createBufferStrategy(3); return; }
Graphics g = bs.getDrawGraphics();
g.drawImage(image, 0, 0, WIDTH, HEIGHT, null);
g.dispose();
bs.show();
}
Я понимаю, что массив пикселей содержит каждый пиксель в BufferedImage, однако кажется, что каждый раз, когда этот массив заполняется значениями, он напрямую влияет на содержимое переменной «изображение». Никогда не используется метод, используемый для копирования значений массива пикселей в изображение.
Действительно ли эти переменные связаны таким образом? Используется ли:
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
создать автоматическую связь между изображением и массивом, создаваемым в приведенном выше коде? Может быть, я схожу с ума и просто что-то пропустил, но я просматривал код несколько раз, и ни разу не манипулировали переменным «изображением» после его первоначального создания. (конечно, помимо рендеринга на экране.) Это всегда массив «пикселей», который просто заполняется разными значениями, что вызывает изменение визуализируемого изображения.
Некоторое понимание этого было бы замечательно. Заранее спасибо!