如何在C ++中获取OpenGL使用的总内存(以字节为单位)?

时间:2011-10-04 00:18:27

标签: c++ windows visual-c++ memory opengl

如何在C ++中获取OpenGL使用的总内存(以字节为单位)?

我正在构建一个OpenGL应用程序,并且使用的总内存似乎正在上升,我可以获得有关变量和放大器使用的总内存的信息。我自己创建的对象,但不能保证OpenGL用于其变量和内存的内存量。对象&那么是否有可能获得 OpenGL在C ++中使用的总内存(

1 个答案:

答案 0 :(得分:7)

一般情况下,你没有。 OpenGL最终是一种硬件抽象。而OpenGL根本就没有提供获取这类信息的方法。

有特定于供应商的扩展可以为您提供询问方式,但您获得的内容取决于架构。 AMD硬件提供ATI_meminfo extension。它将内存分解为对象类型:缓冲区对象,纹理和渲染缓冲区。

NVIDIA提供实验性扩展NVX_gpu_memory_info。注册表中没有关于如何使用它的信息,因此我无法将您链接到任何内容。

在任何情况下,了解GPU使用的最有效方法是自己跟踪它。始终使用internal image formats with sizes;这意味着您可以计算出纹理占用多少内存的非常好的估计。缓冲区对象也是如此。

您将无法获得确切的数字,因为填充,对齐等可能会让您感到困惑。但是你会得到相当不错的东西。