Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL应用程序中的Java线程_Java_Multithreading_Opengl - Fatal编程技术网

OpenGL应用程序中的Java线程

OpenGL应用程序中的Java线程,java,multithreading,opengl,Java,Multithreading,Opengl,我想知道是否可以在Java中执行以下操作。我正在使用wrapper开发一个基于Java的OpenGL应用程序。在每个帧渲染完成时的渲染循环中,我将GL帧中的像素保存到图像文件中。问题是,帧的大小有时相当大,在渲染期间会产生明显的开销将像素写入文件,直到渲染循环的下一个开始。我认为应该执行以下操作: 在帧渲染完成时,从帧缓冲区读取像素 在处理图像文件的类上启动一个新线程 写作 我想知道这样的技术是否会有帮助?如果在单独的线程上完成,下一个渲染循环是否会在不等待图像文件保存的情况下启动?使用线程是否

我想知道是否可以在Java中执行以下操作。我正在使用wrapper开发一个基于Java的OpenGL应用程序。在每个帧渲染完成时的渲染循环中,我将GL帧中的像素保存到图像文件中。问题是,帧的大小有时相当大,在渲染期间会产生明显的开销将像素写入文件,直到渲染循环的下一个开始。我认为应该执行以下操作:

  • 在帧渲染完成时,从帧缓冲区读取像素
  • 在处理图像文件的类上启动一个新线程 写作

  • 我想知道这样的技术是否会有帮助?如果在单独的线程上完成,下一个渲染循环是否会在不等待图像文件保存的情况下启动?使用线程是否可行?我想要实现的是,GL渲染循环不应该等待文件写入,而是在将每个渲染循环末尾的新像素数据提取到文件写入对象的同时继续渲染。

    编写一个线程类,如下所示,以运行各个运行线程

    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();
    

    无论WritePixelsToImageThread中的工作如何,它都会导致渲染循环继续吗?是的,您将此代码添加到新的WritePixelsToImageThread()循环中。开始();它将启动新线程以在run方法中执行作业。那么同步呢?如果在下一个循环中,当我将新像素提取到WritePixelsToImageThread时,它仍然没有完成最后一帧的保存,该怎么办?或者你的意思是我应该为每个图像保存创建一个新线程?