最近,我研究了改进流媒体和诸如此类的纹理提交,尽管我进行了长时间的搜索,但我没有找到任何材料展示甚至提到任何使用仅具有 DSA 功能的 PBO 的方式。
我是不是在寻找正确的地方,还是真的没有办法?
所有像素传输函数都可以采用缓冲区对象+偏移量或客户端 CPU 指针(例如,与 VAO 函数不同,它现在只能使用缓冲区)。因此,允许您直接传递缓冲区对象+偏移量将需要为进行像素传输的两种方式中的每一种都设置一个单独的入口点。所以他们需要glNamedReadPixelsToBuffer
和glNamedReadPixelsToClient
。
因此,它们不是进一步增加函数的数量(也不是禁止使用客户端内存),而是让缓冲区部分像往常一样工作:通过绑定点。所以是的,您仍然必须将该缓冲区绑定到 PACK/UNPACK 绑定。
由于像素传输并不是一种常见的操作(相对于其他类型的状态更改和渲染命令的数量),并且由于这些特定的绑定不直接与 GPU 相关联,因此它不会对您的代码产生太大影响。另外,已经有很多与像素传输操作相关的上下文状态;还有什么重要的?