1

我正在寻找一些 JOGL 类/方法/示例来检索总可用 GPU 内存的大小和当前可用的 GPU 内存。

我知道可以使用OpenGLJOGL Java 文档)来完成。

4

1 回答 1

2

您发布的链接使用 NVidia 专有扩展。然而,考虑到现代 GPU 的运行方式,知道还剩下多少“内存”是绝对没用的。为什么?

因为 OpenGL 总是在一个抽象的内存模型上运行。单个数据对象(纹理、VBO)可能太大而无法放入 GPU 的工作内存中,但除了系统内存(CPU RAM)之外,您可以拥有的纹理和 VBO 数量几乎没有限制。OpenGL 总是根据需要交换内容。

自从支持 OpenGL-4 / DirectX-11 的 GPU 出现并集成了 MMU 以来,甚至数据对象大小的概念也变得毫无意义。今天的 GPU 支持稀疏数据对象。在现代 GPU 上,您可以分配数千像素宽和高的纹理,并且只用数据稀疏地填充它们。因此,即使只绑定了一个纹理对象,它的一部分也可能在系统内存中处于休眠状态,而其他部分则在 GPU 工作内存中。

旧 OpenGL 实际上具有查询纹理是否加载到快速内存中的功能。但是随着 GPU 和系统 RAM 之间的界限消失,那些不再有意义的东西随后也被删除了。

实际上,现在的 GPU RAM 是缓存,您应该这样对待它。除了非常特殊的应用程序之外,您几乎不会在运行时查询 CPU 缓存的大小。

于 2014-03-25T12:02:27.790 回答