2015-07-11 59 views
0

我正在進入java的遊戲開發,我已經看過關於它的視頻,到目前爲止我已經看到了兩種渲染方式:呈現java的最佳方式?

1-創建一個緩衝圖像,每幀更改像素個體,然後繪製圖像(例如,通過將圖像的像素更改爲一種顏色來繪製矩形)

2 - 不是改變像素,而是使用圖形方法繪製其他東西,然後每幀清理畫布(例如繪製一個矩形只是使用graphics.drawRect(...)

那麼,什麼是最好的方法,什麼是每種方法的利弊?因爲第二種方法似乎方式更輕鬆。

+1

你在第二方法使用的方法做的第一。 –

+0

另外,我會建議使用現有的渲染器。 [JavaFX能夠渲染3D場景](http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm)。如果你真的在編寫你自己的渲染器,我建議你開始編寫C/C++代碼,看看如何OpenGL做的東西。 – Turing85

+0

Java不是最好的圖形imo,但可能你已經知道了。也許你也可以看一本關於Java遊戲編程的書http://www.amazon.co.uk/Killer-Game-Programming-Java-Book/dp/0596007302/ –

回答

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(); 
    } 
} 
相關問題