软件渲染仍然是一种选择。
如果使用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();
}
}
你在第二方法使用的方法做的第一。 –
另外,我会建议使用现有的渲染器。 [JavaFX能够渲染3D场景](http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm)。如果你真的在编写你自己的渲染器,我建议你开始编写C/C++代码,看看如何OpenGL做的东西。 – Turing85
Java不是最好的图形imo,但可能你已经知道了。也许你也可以看一本关于Java游戏编程的书http://www.amazon.co.uk/Killer-Game-Programming-Java-Book/dp/0596007302/ –