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

如何获取OpenGL在C+中使用的总内存(以字节为单位)+;? 如何在C++中使用OpenGL获得字节的总内存?,c++,windows,visual-c++,memory,opengl,C++,Windows,Visual C++,Memory,Opengl,我正在构建一个OpenGL应用程序,使用的总内存似乎在增加,我可以获得由我自己创建的变量和对象使用的总内存的信息,但不能保证OpenGL使用了多少内存用于其变量、对象和纹理,因此,在C++中,可以使用OpenGL使用字节的总内存


我正在构建一个OpenGL应用程序,使用的总内存似乎在增加,我可以获得由我自己创建的变量和对象使用的总内存的信息,但不能保证OpenGL使用了多少内存用于其变量、对象和纹理,因此,在C++中,可以使用OpenGL使用字节的总内存<<强>

,一般来说,你没有。OpenGL最终是一种硬件抽象。OpenGL并没有提供获取此类信息的方法

有一些特定于供应商的扩展可以让您提出问题,尽管您得到的回报取决于体系结构。AMD硬件提供了最新的解决方案。它将内存分解为对象类型:缓冲对象、纹理和渲染缓冲

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

在任何情况下,了解GPU使用的最有效的方法就是自己跟踪它。经常使用;这意味着您可以很好地估计纹理占用的内存量。缓冲区对象也是如此


你不会得到准确的数字,因为填充、对齐等会让你感到困惑。但是你会得到相当不错的结果。

我认为纹理mipmap也应该考虑到内存使用统计。+1回答得好。我实际上没有回答这个问题,因为我得到的印象是OP想要知道OpenGL实现(驱动程序)使用的CPU内存。否则(如果是指GPU内存),我不知道他怎么会看到“使用的总内存似乎在增加”。我使用的是mipmap,这应该比使用位图纹理多占用50%的内存。但GL似乎同时使用RAM和视频RAM@Paul:mipmapped纹理所占比例约为无mipmapps纹理的33%(除非是1D或3D纹理)。1D为50%,2D为33%,3D为25%。