1

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

到目前为止我做了什么:

  1. 创建第二个上下文并在两者之间共享
  2. 在线程中上传纹理数据

一切正常,除了纹理上传发生时我注意到一个小的“滞后”!我知道这是因为驱动程序必须同步两个上下文。问题是我希望它流式传输纹理。我不想稍后更新纹理。我只想在后台加载纹理,同时显示“几乎平滑”的加载动画,而不会停止整个应用程序。

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

4

1 回答 1

3

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

这是这个过程的一个例子:http: //www.songho.ca/opengl/gl_pbo.html#unpack

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

于 2014-08-06T19:17:09.950 回答