OpenGL 在与呈现线程不同的线程中创建和加载 VBO 信息



我将尽力解释,但这已经很复杂了。

给定 2 个线程主线程和从线程,

我需要主线程不间断地渲染,从线程执行任何和所有 VBO 加载操作。换句话说,从线程创建VAO,VBO甚至纹理,并且是从线程调用glBufferData()将信息传递到VRAM。

据我了解,必须创建 2 个共享其数据的 OpenGL 上下文(每个线程一个(使每个上下文在其各自的线程中当前,现在应该可以在一个上下文中加载数据并在另一个线程中呈现它。

我已经尝试过实现这一点但没有成功,我的应用程序对我来说似乎很重要,可以简单地显示代码并期望人们了解正在发生的事情。

如果可能的话,我希望有以前做这样的事情的人向我解释实现这种并行化的逐步方法。

我的建议是从一个线程进行所有OpenGL调用。隐式 OpenGL 上下文是特定于线程的,并且尝试解决此问题将需要访问整个 vplatform 特定扩展,并且可能会出现错误。

话虽如此,没有什么可以阻止您在 VAOs VBO 中加载数据纹理并将指向内存的指针传递给您的 openGL 线程,然后通过代理对 glBuffer 和 glTexture 调用您的从属线程。

最新更新