我正在使用 OpenGL2.1 开发 OpenGL 应用程序并希望通过线程上传纹理。
到目前为止我做了什么:
- 创建第二个上下文并在两者之间共享
- 在线程中上传纹理数据
一切正常,除了我注意到纹理上传发生时有一个小的“滞后”!我知道这是因为驱动程序必须同步这两个上下文。问题是我想让它流式传输纹理。我不想稍后更新纹理。我只想在后台加载纹理,同时显示“几乎平滑”的加载动画,而不会使整个应用程序停止。
这就是我搜索并发现PBO可以用于像素数据的DMA数据传输的点。是否可以使用 PBO 进行纹理上传?如果是,怎么办?
最佳答案
您不需要第二个上下文来异步上传纹理数据。只需确保在触发上传后不要立即使用缓冲区,否则它将停止等待复制完成。
这是此过程的示例:http://www.songho.ca/opengl/gl_pbo.html#unpack
这里有更多关于 PBO 是什么以及它们应该如何使用的信息:http://www.opengl.org/wiki/Pixel_Buffer_Object
关于c++ - 使用 PBO 上传 OpenGL 纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25167942/