OpenGL中的保留内存

OpenGL中的保留内存,opengl,opengl-es,computer-vision,Opengl,Opengl Es,Computer Vision,有没有什么方法可以为OpenGL中的GL_元素_数组_缓冲区保留内存,比如Cuda中std::vector或推力::device_vector的.reserved(int) 比如说,我在frame1上有200个三角形(600个索引),但在frame2上有250个全新的三角形(750个索引)。如何在开始时保留一次并在每一帧上更新它?一旦分配了缓冲区对象并进行了glBufferData()调用,则会分配用于备份该对象的内存。您可以将空数据指针传递到第一个glBufferData()调用中,以在不上载

有没有什么方法可以为OpenGL中的GL_元素_数组_缓冲区保留内存,比如Cuda中std::vector或推力::device_vector的.reserved(int)


比如说,我在frame1上有200个三角形(600个索引),但在frame2上有250个全新的三角形(750个索引)。如何在开始时保留一次并在每一帧上更新它?

一旦分配了缓冲区对象并进行了
glBufferData()
调用,则会分配用于备份该对象的内存。您可以将空数据指针传递到第一个
glBufferData()
调用中,以在不上载数据的情况下生成仅分配缓冲区

您可以使用
glBufferSubData()
对现有缓冲区进行修补,而无需重新分配,但是请确保不要尝试修补仍在现有绘图调用中引用的缓冲区。看


有关更多详细信息。

谢谢,但当我保留了更多内存时,运行时间似乎增加了,尽管绘制了相同数量的点。您确定您正在充分地管道化资源更新(例如,不更新仍被绘制引用的缓冲区)?如果管道不够深,那么资源重影较大的缓冲区会减慢速度(内存分配越多,拷贝越多)。