有很多顶点

时间:2014-06-23 17:36:28

标签: opengl cpu-usage vertices

我正在尝试绘制opengl 3d地形,但是如果我有很多顶点而没有用它们绘制任何三角形,我开始怀疑是否存在巨大的cpu问题。

2 个答案:

答案 0 :(得分:1)

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

GPU主要使用与CPU使用的地址空间不同的地址空间。为了使GPU可以访问存储器页面,必须将页面映射到GPU地址空间。创建这些映射有一些每页开销。 GPU访问的内存页面也可能必须固定/连线,以防止在GPU访问它们时将其分页。同样,每页的开销可能会有一些问题。

只要缓冲区仍然映射,您只需为这些操作支付一次价格,而不是为每一帧支付。但是,如果通过您的应用程序或与也使用GPU的其他应用程序组合达到资源限制,您的缓冲区可能会被取消映射,并且开销可能会重复。

如果你有大量的缓冲区,并且通常只使用它们中的一小部分,那么将几何体分成多个较小的缓冲区可能是有益的。当然,如果您可以对顶点进行分组,那么只有少数缓冲区才能使用任何给定帧的顶点,这是唯一可行的。绑定每个缓冲区也有开销,因此无法使用太多缓冲区。

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

答案 1 :(得分:0)

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