Opengl 有很多顶点

Opengl 有很多顶点,opengl,cpu-usage,vertices,Opengl,Cpu Usage,Vertices,我正在尝试绘制opengl 3d地形,但我开始怀疑,如果我有很多顶点而没有绘制任何三角形,是否会让cpu头疼。驻留在内存中但未被主动访问的数据只会占用内存,并且不会影响处理器时钟周期消耗。这适用于任何类型内存中的任何类型的数据。可能会有一些开销,但不应该太大。其中很多都高度依赖于平台 GPU主要使用不同于CPU使用的地址空间。为了使GPU能够访问内存页,这些页必须映射到GPU地址空间。创建这些映射需要一些每页开销。GPU访问的内存页可能还必须固定/连接,以防止在GPU访问内存页时被分页。同样,每

我正在尝试绘制opengl 3d地形,但我开始怀疑,如果我有很多顶点而没有绘制任何三角形,是否会让cpu头疼。

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

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

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

只要缓冲区保持映射状态,就只需为这些操作支付一次费用,而不是为每一帧支付一次费用。但是,如果应用程序达到资源限制,或者与其他也使用GPU的应用程序结合使用,则缓冲区可能会被取消映射,并且开销可能会重复

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

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