【发布时间】:2013-12-16 01:02:20
【问题描述】:
我目前正在关注从头开始的 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();
在图像和上面代码中创建的数组之间创建一个自动链接?也许我快疯了,只是错过了一些东西,但我已经多次审查了代码,并且没有一次是在初始创建后操纵的“图像”变量。 (当然,除了被渲染到屏幕上。)数组“像素”总是被不同的值填充,导致渲染图像发生变化。
对此有一些见解会很棒。提前谢谢!
【问题讨论】:
-
基本上,当您询问像素数组时,您可以直接访问图像数据。因此,每当您更改数组时,它都会立即更改...
标签: java image graphics render pixels