2012-07-17 73 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