【发布时间】:2023-02-23 03:53:34
【问题描述】:
我在 OpenGL 中有一个缓冲区 (SSBO),需要非常频繁地更新。我所做的是首先创建一个缓冲区,通常是这样的:
glGenBuffers(1, &buff);
glBindBuffer(..., buff);
glBufferData(..., 0, totalSize, NULL, GL_DYNAMIC_DRAW);
现在我用glBufferSubData()更新它。
我注意到,随着缓冲区大小的增加,更新相同大小的子数据的时间呈指数级增长。
为什么上传相同大小的数据需要更多时间?还有没有更快的方法来做到这一点?
【问题讨论】:
-
可能没有适用于所有硬件供应商的好的答案。 OpenGL 没有指定如何实现数据上传,因此它取决于驱动程序的实现。
-
您是否删除了旧缓冲区?