如何获得在C + +的OpenGL使用的字节总内存?

如何获得在C + +的OpenGL使用的字节总内存

我正在构build一个OpenGL应用程序,总的内存似乎正在上升,我可以得到有关由我自己创build的variables和对象所使用的总内存的信息,但不能保证OpenGL为其variables和对象使用了多less内存&textures等。那么是否有可能得到在C + +的OpenGL使用的总字节数?

一般来说,你不这样做。 OpenGL最终是一个硬件抽象。 而OpenGL根本不提供获取这种信息的方法。

有特定于供应商的扩展可以给你提供方法,不过你得到的东西取决于体系结构。 AMD硬件提供了ATI_meminfo扩展 。 它将内存分解成对象类型:缓冲区对象,纹理和渲染缓冲区。

NVIDIA提供了实验扩展NVX_gpu_memory_info。 注册表中没有关于如何使用它的信息,所以我不能将您链接到任何东西。

无论如何,知道GPU使用的最有效的方法就是自己跟踪它。 总是使用内部图像格式的大小 ; 这意味着你可以计算出纹理占用多少内存的相当好的估计。 缓冲区对象也是如此。

你不会得到确切的数字,因为填充,对齐,等可以混淆你。 但你会得到相当不错的东西。