GL_PIXEL_PACK_BUFFER异步性如何工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GL_PIXEL_PACK_BUFFER异步性如何工作?相关的知识,希望对你有一定的参考价值。

如果我理解正确,当我使用glGetTextureSubImage()时,OpenGL必须同​​步,才能返回此函数。

但是如果我将缓冲区绑定到GL_PIXEL_PACK_BUFFER,那么函数调用是异步的。

一旦我尝试访问数据,OpenGL是否会同步?还有其他规则吗?

答案

一旦我尝试访问数据,OpenGL是否会同步?

是;这就是重点。在读入存储时,OpenGL实现必须假定您将立即访问读取的像素数据。它必须假设,因为它无法检测您何时将要读取该存储。毕竟,OpenGL不拥有该存储。

缓冲区对象是OpenGL拥有的存储。如果你调用glGetBufferSubDataglMapBufferRange或其他什么,OpenGL会看到那个调用。因此,OpenGL实现可以与该点的读取操作同步,而不是在您发出读取时。

当然,使用持久映射,OpenGL无法告诉您何时读取数据。但是如果你正在使用持久映射,那么你告诉OpenGL你将执行必要的同步,所以它不会尝试这样做。

以上是关于GL_PIXEL_PACK_BUFFER异步性如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

Redis如何保证原子性

javascript 我第一次尝试在节点中的网络爬虫...显然我不知道如何使用异步性

React中redux的异步性问题?

看 Serverless Task 如何解决任务调度&可观测性中的问题

善用js 异步引入,大幅提升vue站点加载速度,媲美大厂流畅性

如何组成异步操作?