使用PBO的OpenGL纹理上传?

时间:2014-08-06 18:49:31

标签: c++ multithreading opengl pbo

我正在使用OpenGL2.1开发一个OpenGL应用程序,并希望通过线程上传纹理。

到目前为止我做了什么:

  1. 创建第二个上下文并在两个
  2. 之间共享
  3. 在线程中上传纹理数据
  4. 一切都运行正常,只是当纹理上传发生时我注意到一个小的“滞后”!我知道这是因为驱动程序必须同步两个上下文。问题是我希望它流式传输纹理。我不想稍后更新纹理。我只是想在后台加载纹理,同时显示“几乎平滑”的加载动画,而不会拖延整个应用程序。

    这就是我搜索的点,发现PBO可用于像素数据的DMA数据传输。是否可以使用PBO进行纹理上传?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:3)

您不需要第二个上下文来上传纹理数据异步。只需确保在触发上传后不立即使用缓冲区,否则它将停止等待副本完成。

以下是此过程的示例:http://www.songho.ca/opengl/gl_pbo.html#unpack

以下是关于PBO是什么以及如何使用它们的更多信息:http://www.opengl.org/wiki/Pixel_Buffer_Object