2012-07-17 46 views
2

我想知道是否有可能做Java.I下面我工作的使用LWJGL wrapper.In渲染每一幀渲染循環結束我保存像素的基於Java的應用程序的OpenGL從GL幀轉換爲圖像文件。問題是,幀的大小有時非常大,並且在將像素寫入文件的過程中,直到渲染循環的下一次開始時,它會產生明顯的開銷。我認爲要做什麼如下所示:Java線程在OpenGL應用程序

  1. 在幀渲染完成後,從幀緩衝區讀取像素。
  2. 開始一個新的線程上的照顧圖像文件 寫作的類。

我不知道這樣的技術會有什麼幫助嗎?下一個渲染循環會在沒有等待圖像文件保存的情況下開始保存,如果它是在單獨的線程上完成的話?線程可行嗎?我想要實現的是GL渲染循環不應該等待文件寫入,而是在每個渲染循環結束時將新像素數據提取到文件寫入對象時繼續進行渲染。

回答

3

編寫一個線程類如下運行單個運行線程。

public class WritePixelsToImageThread extends Thread { 

    public void run(){ 
     // place your code here for 
     // read pixels from Frame and write that image. 
     // this is an individual process 
    } 
} 

啓動一個線程

new WritePixelsToImageThread().start(); 
+0

會引起渲染循環,無論繼續在WritePixelsToImageThread工作後? – 2012-07-17 11:04:49

+0

是的,你在循環中添加這個代碼new WritePixelsToImageThread()。start();它會啓動新的線程來執行run方法中的工作。 – NPKR 2012-07-17 11:10:56

+0

同步呢?如果在接下來的循環,當我取回新的像素爲WritePixelsToImageThread,但迄今仍未完成保存最後一幀?或者你的意思是每個圖像保存我應該創建一個新的線程? – 2012-07-17 11:38:46