OpenGL - 在将纹理数据查询到 PBO 后,我可以使用纹理吗?



>我通过FBO渲染成纹理。我想将纹理数据复制到 PBO 中,所以我使用glGetTexImage.我将在此 PBO 上使用glMapBuffer,但仅在下一帧(或稍后(中使用,因此它不会导致停滞。

但是,我可以在glGetTexImage调用后立即使用该纹理而不会导致停顿吗?我可以将其绑定到纹理单元并从中渲染吗?我可以通过 FBO 再次渲染它吗?

但是,我可以在 glGetTexImage 调用后立即使用该纹理而不会导致停顿吗?

这是依赖于实现的行为。它可能会导致也可能不会导致停滞,具体取决于实现如何执行实际数据传输。

我可以将其绑定到纹理单元并从中渲染吗?

是的。

我可以通过 FBO 再次渲染它吗?

是的。但是,这可能会导致也可能不会导致停滞,具体取决于实现在内部处理数据一致性要求的方式。即在修改数据之前,纹理数据要么必须完全传输到 PBO 中,要么如果实现可以检测到,整个事情将被更改(例如,通过发出与纹理附件匹配的 glClear 调用(,它可能只是孤立内部数据结构并从一个新的内存区域开始, 避开那个摊位。

这是几乎无法预测的极端情况之一。您必须分析性能并亲自查看。避免停顿的死法是使用新鲜的纹理对象。

相关内容

最新更新