GL_PIXEL_PACK_BUFFER异步性如何工作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GL_PIXEL_PACK_BUFFER异步性如何工作?相关的知识,希望对你有一定的参考价值。
如果我理解正确,当我使用glGetTextureSubImage()时,OpenGL必须同步,才能返回此函数。
但是如果我将缓冲区绑定到GL_PIXEL_PACK_BUFFER,那么函数调用是异步的。
一旦我尝试访问数据,OpenGL是否会同步?还有其他规则吗?
答案
一旦我尝试访问数据,OpenGL是否会同步?
是;这就是重点。在读入存储时,OpenGL实现必须假定您将立即访问读取的像素数据。它必须假设,因为它无法检测您何时将要读取该存储。毕竟,OpenGL不拥有该存储。
缓冲区对象是OpenGL拥有的存储。如果你调用glGetBufferSubData
或glMapBufferRange
或其他什么,OpenGL会看到那个调用。因此,OpenGL实现可以与该点的读取操作同步,而不是在您发出读取时。
当然,使用持久映射,OpenGL无法告诉您何时读取数据。但是如果你正在使用持久映射,那么你告诉OpenGL你将执行必要的同步,所以它不会尝试这样做。
以上是关于GL_PIXEL_PACK_BUFFER异步性如何工作?的主要内容,如果未能解决你的问题,请参考以下文章
javascript 我第一次尝试在节点中的网络爬虫...显然我不知道如何使用异步性
看 Serverless Task 如何解决任务调度&可观测性中的问题