是什么让glBufferSubData在大缓冲区上变慢
What makes glBufferSubData slow on big buffer?
我注意到随着缓冲区大小的增长,在 VBO 中更新少量顶点的速度非常慢。例如,当我更新时,512*512 缓冲区中的 2 个 verts 比更新整个 256*256 缓冲区时慢得多,尽管更新的数据量完全相反。这是 glBufferSubData 的正常行为吗?
这是我分配缓冲区的方式:
glBufferData(GL_ARRAY_BUFFER, sizeof(uiMapView::vertex)*(size + 1)*(size + 1), m_verts, GL_DYNAMIC_DRAW);
这是我更新它的方式:
glBufferSubData(GL_ARRAY_BUFFER, sizeof(uiMapView::vertex)*iMinId, sizeof(uiMapView::vertex)*(iMaxId-iMinId), (&m_verts[iMinId]));
好吧,我对我的解决方案进行了更多的研究,发现 VBO 更新并不是真正的瓶颈。减慢我的程序的原因是使用数据进行的大量计算,这显然产生了最大的影响。
所以,实际上,正确的答案是:不,这不是glBufferSubData的正常行为。缓冲区大小不会对 glBufferSubData 性能产生如此大的影响。
相关文章:
- C++字符*缓冲区的大小
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- Xaudio2在更改缓冲区或循环时弹出声音
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 多线程双缓冲区
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- 套接字读取后,我在缓冲区中看到意外输入
- std::带有自定义缓冲区的 iostream 不允许我写入
- 从返回的顶点缓冲区查询顶点结构
- Vulkan 中的动态顶点缓冲区格式设置
- OpenGL 16 位模板缓冲区?
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 在 openGL 中多次绑定缓冲区
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 为什么缓冲区的内容在读取空 rdbuf 时被删除?