【问题标题】:Having a lot of vertices [closed]有很多顶点[关闭]
【发布时间】:2014-06-23 17:36:28
【问题描述】:

我正在尝试绘制 opengl 3d 地形,但是我开始怀疑如果我有很多顶点而没有用它们绘制任何三角形,是否会给 CPU 带来巨大的头痛。

【问题讨论】:

    标签: opengl cpu-usage vertices


    【解决方案1】:

    可能会有一些开销,但不应很大。其中很多都高度依赖于平台。

    GPU 主要使用与 CPU 不同的地址空间。为了使 GPU 可以访问内存页面,这些页面必须映射到 GPU 地址空间。创建这些映射需要一些每页开销。 GPU 访问的内存页面可能还必须固定/连接,以防止它们在 GPU 访问它们时被分页。同样,连接页面可能会产生一些每页开销。

    只要缓冲区保持映射状态,您只需为这些操作付出一次代价,而不是为每一帧付出代价。但是,如果您的应用程序或与其他也在使用 GPU 的应用程序一起达到资源限制,则您的缓冲区可能未映射,并且开销可能会重复。

    如果您有大量缓冲区,并且通常只使用其中的一小部分,则将几何体拆分为多个较小的缓冲区可能会有所帮助。当然,只有当您可以对顶点进行分组时,这才是实用的,这样您将主要使用来自任何给定帧的少量缓冲区的顶点。绑定每个缓冲区也有开销,所以缓冲区太多也是不可取的。

    如果您用于绘图调用的顶点在有限的索引范围内,您还可以考虑使用glDrawRangeElements() 进行绘图。通过此调用,您提供了一个可供绘制调用使用的索引范围,这使驱动程序有机会仅映射部分缓冲区而不是整个缓冲区。

    【讨论】:

      【解决方案2】:

      驻留在内存中但未被主动访问的数据仅占用内存,对处理器时钟周期消耗没有影响。这适用于任何类型的内存中的任何类型的数据。

      【讨论】:

        猜你喜欢
        • 2014-02-07
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        • 2016-08-17
        • 1970-01-01
        • 2013-04-09
        • 2013-01-13
        • 2023-03-21
        相关资源
        最近更新 更多