如果我计划在OpenGL中使用多线程,是否应该为每个上下文(从glGenBuffers)拥有单独的缓冲区?
我目前对OpenGL多线程还不太了解(现在我是在“单”线程中工作)。我需要知道是否可以共享已推送到视频内存中的缓冲区(使用glBufferData / glBufferSubData),还是必须为另一个线程保留缓冲区的副本。
我目前对OpenGL多线程还不太了解(现在我是在“单”线程中工作)。我需要知道是否可以共享已推送到视频内存中的缓冲区(使用glBufferData / glBufferSubData),还是必须为另一个线程保留缓冲区的副本。
glGenBuffers(...)
返回的内容)将具有共享池。但是VAO、FBO和状态机的其他部分不会被共享——基本上只有实际存储数据的对象,如缓冲区对象、纹理和GLSL程序才会被共享。此外,如果您在其他线程中修改这些缓冲区,而它们正在被尚未完成的绘制命令使用,那么您的性能将受到明显的影响。 - Andon M. ColemanglFinish(...)
和CPU信号来实现。 - Andon M. Coleman