1

是否可以将显示列表数据存储在视频卡内存中?我只想使用像视频缓冲区对象(VBO)这样的视频内存来存储 DisplayList。但是当我尝试它时,它总是使用主内存而不是视频内存。我在 nVidia geForce 8600GTS 和 GTX260 上进行了测试。

4

2 回答 2

2

显示列表是一个非常古老的功能,可以追溯到 OpenGL-1.0。它们很久以前就被弃用了。无论如何,出于兼容性原因,您仍然可以使用它们。

OpenGL 的工作方式防止显示列表仅保存在 GPU 内存中。图形服务器(正如 OpenGL 所称的)是一个纯粹的抽象事物,并且规范保证,您放在显示列表中的内容始终可用。然而,在现代 GPU 中,内存量有限,因此可以根据需要交换有效载荷数据。

实际上,GPU 内存是系统 RAM 中数据的缓存(与系统 RAM 应作为存储缓存相同的方式)。

更重要的是,现代 GPU 可能会崩溃,驱动程序将执行完全重置,给用户一种一切正常的印象。但在重置后,GPU 内存上的所有数据都必须重新初始化。

因此 OpenGL 有必要在内存中保留每个有效载荷数据的副本以支持平滑操作。

因此,您的数据也显示为消耗系统 RAM 是完全正常的。尽管很可能显示列表也缓存在 GPU 内存中。

于 2012-06-25T08:30:05.043 回答
1

不推荐使用显示列表。您可以使用带有顶点索引的 VBO 来使用图形内存,并使用glDrawElements.

于 2012-06-25T08:14:16.453 回答