我必须在每一帧上只上传顶点数组的特定元素(更多数千)- 或第一个和最后一个更改值之间的整个区域,但是它效率很低,因为它有可能重新上传整个数组,无论如何都会上传许多未更改的值。
问题还包括将顶点数据上传到 GPU 的最快方法是什么。
有几种方法可以做到:
glBufferData() / glBufferSubData() // Standard upload to buffer
glBufferData() // glBufferData with double buffer
glMapBuffer() // Mapping video memory
cudaMemcpy() // CUDA memcopy from host to device vertex buffer
哪个会是最快的?我特别关心 CUDA 方法,这与标准 OpenGL 方法不同。它比 glBufferData() 或 glMapBuffer() 快吗?