gpt4 book ai didi

multithreading - 从另一个线程更新映射的 OpenGL 缓冲区

转载 作者:行者123 更新时间:2023-12-03 13:19:29 27 4
gpt4 key购买 nike

OpenGL 函数只能从当前 OpenGL 上下文所在的线程调用。此限制是否适用于使用 glMapBuffer/glMapBufferRange 更新数据,即我可以映射缓冲区(的区域)然后在另一个线程中读取/写入该区域吗?当然,假设映射(和取消映射)函数是从渲染线程调用的。

最佳答案

在回答主要问题之前,让我们掩盖一些错误信息:

I know that you're supposed to only call OpenGL functions in the thread that created the OpenGL context.

这不是真的。您必须仅在当前上下文所在的线程上调用 OpenGL 函数。您可以使一个 OpenGL 上下文在不同的线程中处于当前状态(这将自动使其在前一个线程中不处于当前状态。OpenGL 上下文只能同时在一个线程中处于当前状态)。您可以创建多个共享对象的上下文。每个这样的上下文都可以在不同的线程中是当前的。

现在进入正题。是的,您可以完全自由地从另一个线程使用映射指针。但是,正如您所说,您必须使用适当的同步机制让原始线程知道您已经完成。

关于multithreading - 从另一个线程更新映射的 OpenGL 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35388919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com