在涉及多个着色器的 RenderToTexture 上下文中,我需要 CPU 访问最终渲染目标之一。使用glGetTexImage
效果很好,不幸的是它将所有纹理数据复制到客户端内存。
为了避免这种复制,我尝试使用 a 实现 RTT TEXTURE_BUFFER
,因此将单独的缓冲区对象附加到纹理,使用该纹理作为渲染的一部分,然后简单地使用glMapBuffer
映射纹理的数据存储并使其可访问中央处理器。
除了代码,我想问一下这样的策略是否正确(没有比我更好的想法了)或者它是否违反了任何规范。
我有大量关于 TBO 作为设置纹理的方法的文档,但没有关于使用 TBO 读取 RTT 结果的文档。我只是想知道我正在尝试做的事情是否不合法。