我正在尝试将图像的像素作为RGB返回到屏幕上。我正在加载图像:
package graphics;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Texture{
public static Render floor = loadBitmap("/images/image2.png");
public static Render loadBitmap(String fileName){
try{
BufferedImage image = ImageIO.read(Texture.class.getResource(fileName));
System.out.println("images loaded");
int width = image.getWidth();
int height = image.getHeight();
Render result = new Render(width, height);
image.getRGB(0, 0, width, height, result.pixel, 0, width);
return result;
}catch(Exception e){
System.out.println("Fatal error: imaging libraries missing or corrupt");
throw new RuntimeException(e);
}
}
}
并使用以下内容在单独的类中渲染像素:
pixel[pixelPosition] = Texture.floor.pixel[((xPix & 7)) + ((yPix & 7 )) * 8];
其中pixel
是int[]
,其参数为[xPix + yPix *width]
。但是,每当我启动程序时,图像都会加载(我知道这是因为没有返回任何错误,我设置了一个打印命令来告诉我它是否已加载)但像素没有渲染。我想也许我只需要更改pixel
因为它没有正确读取图像,但后来我发现pixel[pixelPosition] = ( ((xPix & 15) << xDisplacement) | ((yPix & 15)) << yDisplacement) & 0xffffff;
工作得很好。出了什么问题?