opengl 如何更新大于当前vbo缓冲区大小的vbo数据?

js81xvg6  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(188)

我生成了一个名为object_A的vbo buffer(顶点缓冲区)对象,假设object_A包含10个顶点(30个浮点数)。现在我想使用20个顶点(60个浮点数)的glMapBuffer更新object_A,我可以使用glMapBuffer吗?

db2dz4w8

db2dz4w81#

你不能使用glMapBuffer(),那只是为了将缓冲区的数据Map到客户端地址空间。
如果你想调整缓冲区的大小,那么你必须使用glBufferData()

glBufferData(GL_ARRAY_BUFFER, 60 * sizeof(GLfloat), NULL, GL_DYNAMIC_DRAW);

如果你想要类似于realloc()的东西(重新分配缓冲区,保留旧的内容),那么你可以利用glCopyBufferSubData()在缓冲区之间复制数据。

相关问题