gpt4 book ai didi

opengl - 为什么分配大量VBO会导致性能问题?

转载 作者:行者123 更新时间:2023-12-02 04:40:28 30 4
gpt4 key购买 nike

我有一个分配约 300 个 VBO 的应用程序。然而,每帧中只有 40 个用于绘制命令。我已经使用 OpenGL 分析器验证了这一点。

我注意到,如果减少 VBO 的数量,性能会大大提高。然而,考虑到大多数 VBO 大部分时间都未使用,我很惊讶这是一个问题。我假设大多数 VBO 都没有分配内存,因为我什至没有对未使用的 VBO 调用 glBufferData。

有谁知道为什么拥有额外未使用的 VBO 会导致性能下降?我猜这可能与驱动程序有关(我有 Nvidia 460GTX)。

此外,我对将一堆粒子系统(其中大部分在任何给定帧期间都未使用)组合到单个 VBO 中的方法感兴趣,这样我就不会遇到这个问题。

编辑:事实证明,性能问题与 VBO 无关。然而,我在调查过程中学到了很多有关将数据流式传输到 VBO 的知识。这篇文章很有趣:http://onrendering.blogspot.com/2011/10/buffer-object-streaming-in-opengl.html .

最佳答案

事实证明,在我的案例中,VBO 的数量并不是造成性能瓶颈的原因。事实上,大多数 OpenGL 实现似乎都能很好地处理大量 VBO。我在 2009 年 MacBook Air 和 Nvidia GTX 460 上进行了测试。

切线相关:如果您使用许多 VBO,通常有一种方法可以避免这种情况并获得一些效率。就我而言,我使用单个流式 VBO 来渲染来自多个不同粒子系统的粒子,而不是为每个粒子系统专用一个 VBO。这减少了批处理/绘制调用的数量,并释放了一些 CPU 周期。

以下是有关 VBO 流式传输的更多信息: http://onrendering.blogspot.com/2011/10/buffer-object-streaming-in-opengl.html

关于opengl - 为什么分配大量VBO会导致性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699413/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com