我生成了一个名为object_A的vbo buffer(顶点缓冲区)对象,假设object_A包含10个顶点(30个浮点数)。现在我想使用20个顶点(60个浮点数)的glMapBuffer更新object_A,我可以使用glMapBuffer吗?
object_A
glMapBuffer
db2dz4w81#
你不能使用glMapBuffer(),那只是为了将缓冲区的数据Map到客户端地址空间。如果你想调整缓冲区的大小,那么你必须使用glBufferData()。
glMapBuffer()
glBufferData()
glBufferData(GL_ARRAY_BUFFER, 60 * sizeof(GLfloat), NULL, GL_DYNAMIC_DRAW);
如果你想要类似于realloc()的东西(重新分配缓冲区,保留旧的内容),那么你可以利用glCopyBufferSubData()在缓冲区之间复制数据。
realloc()
glCopyBufferSubData()
1条答案
按热度按时间db2dz4w81#
你不能使用
glMapBuffer()
,那只是为了将缓冲区的数据Map到客户端地址空间。如果你想调整缓冲区的大小,那么你必须使用
glBufferData()
。如果你想要类似于
realloc()
的东西(重新分配缓冲区,保留旧的内容),那么你可以利用glCopyBufferSubData()
在缓冲区之间复制数据。