OpenGL函数只能在当前OpenGL上下文所在的线程中调用。这个限制是否适用于使用glMapBuffer
/glMapBufferRange
更新数据,即我可以映射(一部分)缓冲区,然后在另一个线程中读取/写入该区域吗?当然,假设映射(和取消映射)函数是从渲染线程中调用的。
OpenGL函数只能在当前OpenGL上下文所在的线程中调用。这个限制是否适用于使用glMapBuffer
/glMapBufferRange
更新数据,即我可以映射(一部分)缓冲区,然后在另一个线程中读取/写入该区域吗?当然,假设映射(和取消映射)函数是从渲染线程中调用的。
这不是真的。您必须只在上下文当前所在的线程中调用OpenGL函数。您可以在不同的线程中使OpenGL上下文成为当前上下文(这将自动使其在以前的线程中不是当前上下文。OpenGL上下文在同一时间只能在一个线程中为当前上下文)。而且,您可以创建共享对象的多个上下文。每个这样的上下文可以在不同的线程中为当前上下文。我知道你只能在创建了OpenGL上下文的线程中调用OpenGL函数。