我正在使用java进行游戏开发,我正在观看有关它的视频,到目前为止,我已经看到了两种渲染方式:
1 - 创建缓冲图像,单独更改每帧的像素,然后绘制图像(例如通过将图像的像素更改为颜色来绘制矩形)
2 - 不是改变像素而只是使用图形方法在其他东西上绘制东西,并且每帧清理画布(例如绘制矩形只需使用graphics.drawRect(...)
那么,最好的方法是什么,每种方法的优缺点是什么?因为第二种方法似乎更容易。
答案 0 :(得分:0)
软件渲染仍然是一种选择。
如果使用Frame实现Runnable,将paint()和repaint()声明为{}会更快,并在run()内的循环中进行绘制。
例如......
private static MemoryImageSource imgSrc;
private static DirectColorModel imgCm = new DirectColorModel(32,0xff0000,0xff00,0xff);
private static Image img;
private static int xsize = 256;
private static int ysize = 256;
private static int pixels[];
private static int appLeft = 0;
private static int appTop = 0;
private static void init() { // initialize
imgSrc = new MemoryImageSource(xsize, ysize, pixels, 0, xsize);
img = createImage(imgSrc);
imgSrc.setAnimated(true);
imgSrc.newPixels(pixels, imgCm, 0, xsize);
appLeft = getInsets().left;
appTop = getInsets().top;
}
public void run() {
Graphics g;
for(;;) {
// .... render something here
// then...
g = getGraphics();
imgSrc.newPixels(); // NOTE: renders array to image
g.drawImage(scr, appLeft, appTop, this);
g.dispose();
}
}