是否可以将显示列表数据存储在显卡内存中? 我想只使用像视频缓冲对象(VBO)这样的视频内存来存储DisplayList。 但是当我尝试它时,它总是使用主存储器而不是视频存储器。 我测试了nVidia geForce 8600GTS和GTX260。
答案 0 :(得分:2)
显示列表是一个非常古老的功能,可以追溯到OpenGL-1.0。他们很久以前就已经被贬低了。无论如何,出于兼容性原因,你仍然可以使用它们。
OpenGL的工作方式,可以防止显示列表仅保存在GPU内存中。图形服务器(作为OpenGL调用它)是一个纯粹抽象的东西,并且规范保证,您放在显示列表中的内容始终可用。然而,在现代GPU中,只有有限的内存,因此有效载荷数据可以根据需要进行交换。
有效地,GPU内存是系统RAM中数据的缓存(系统RAM应该作为存储缓存处理)。
更进一步,现代GPU可能会崩溃,并且驱动程序将执行完全重置,从而为用户提供一切正常工作的印象。但重置后,GPU内存上的所有数据都必须重新初始化。
因此,OpenGL必须将每个有效负载数据的副本保存在内存中,以支持平稳运行。
因此,您的数据也显示为消耗系统RAM是完全正常的。尽管很可能,显示列表也在GPU内存中缓存。
答案 1 :(得分:1)
不推荐使用显示列表。您可以将VBO与顶点索引一起使用以使用图形内存,并使用glDrawElements
绘制它。