使用PBO和VBO

时间:2013-04-25 11:56:54

标签: multithreading opengl fbo pbo

我的应用程序(QT / OpenGL)需要以25fps的速度上传来自IP camaras的一堆视频,然后应用它进行处理:

  1. 对于每个视频,一个去马赛克滤镜,锐化滤镜,LUT和 失真docrretion。
  2. 然后我需要在opengl(纹理投影等)中渲染,选择一个或多个先前处理过的帧
  3. 然后我需要将结果显示给一些小部件(QGLWidget)并读取像素以写入电影文件。
  4. 我尝试了解PBO和FBO的利弊,并想象一下我想在您的帮助下验证以下架构:

    • 我为每个视频创建一个线程,以便在缓冲区(图像数组)中捕获。视频有一个缓冲区。
    • 我创建了一个上传过滤器渲染线程,旨在:a)将帧上传到GPU,b)将过滤器应用到GPU,c)应用合成并渲染到纹理
    • 我让GUI线程在我的小部件中渲染上一步中创建的纹理。

    对于上传帧到GPU 进程,我猜最好的方法是为每个视频使用PBO(可能是两个PBOS),以异步方式加载帧。

    对于 Apply-Filter-info-GPU ,我想使用FBO,这似乎是渲染到纹理的最佳选择。我将首先绑定由PBO上传的纹理,然后渲染到另一个纹理,即过滤后的图像。我不确定只使用一个FBO并根据视频上传更改绑定纹理输入和绑定纹理目标,或者使用尽可能多的FBOS,作为要上传的视频。

    最后,为了将结果显示到窗口小部件中,我使用FBO渲染的最终纹理。为了写入电影文件,我使用PBO将像素从GPU异步复制回CPU。

    看起来是否正确?

0 个答案:

没有答案