使用glMapBuffer映射缓冲区,然后在不同的线程中使用指针

时间:2018-02-17 12:54:39

标签: opengl-es

我正在尝试优化在主线程中发出所有OpenGL ES调用的程序。主要性能问题似乎是通过glBufferData频繁缓冲上传,更具体地说,这个函数内部的memcpy与主线程同步完成(缓冲区非常大)。

我目前的计划是使用glMapBuffer将缓冲区映射到主线程中,然后将指针发送到执行memcpy的不同线程,一旦该线程完成,在主线程中再次调用glUnmapBuffer。之后,缓冲区用于渲染。

这种方法是否有效或在没有gl上下文的线程中使用glMapBuffer指针是否危险?或者有没有办法确保主线程上没有执行memcpy,一切都在管道线程上完成?

问候

1 个答案:

答案 0 :(得分:0)

一旦映射了缓冲区,那么指针就是一个“普通”CPU指针,因此可以像任何其他CPU指针一样使用,包括跨线程访问。

在调用glUnmapBuffer()之前,请确保完成所有写入并同步线程。