軟件渲染仍然是一種選擇。
如果使用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/ –