如何獲取C++中OpenGL使用的字節總內存?如何獲取C++中OpenGL使用的總內存?
我正在構建一個OpenGL應用程序,並且使用的內存總量似乎在增加,我可以獲得有關變量使用的總內存的信息&自己創建的對象,但無法保證OpenGL使用的內存有多少它的變量&對象&紋理等所以有可能得到OpenGL在C++中使用的字節總內存?
如何獲取C++中OpenGL使用的字節總內存?如何獲取C++中OpenGL使用的總內存?
我正在構建一個OpenGL應用程序,並且使用的內存總量似乎在增加,我可以獲得有關變量使用的總內存的信息&自己創建的對象,但無法保證OpenGL使用的內存有多少它的變量&對象&紋理等所以有可能得到OpenGL在C++中使用的字節總內存?
一般來說,你不知道。 OpenGL最終是一個硬件抽象。而OpenGL根本沒有提供獲取這類信息的方法。
有供應商特定的擴展可以給你方式提出問題,但你得到的回報取決於體系結構。 AMD硬件提供了ATI_meminfo extension。它將內存分解成對象類型:緩衝對象,紋理和渲染緩衝區。
NVIDIA提供了實驗擴展NVX_gpu_memory_info。註冊表中沒有關於如何使用它的信息,所以我無法將您鏈接到任何內容。
在任何情況下,知道GPU使用的最有效方法就是自己跟蹤它。始終使用internal image formats with sizes;這意味着你可以計算紋理佔用多少內存的相當好的估計。緩衝對象等也是如此。
你不會得到確切的數字,因爲填充,對齊,和類似可以混淆你。但你會得到一些相當不錯的東西。
我認爲也應該考慮內存使用統計紋理mipmap。 – Luca
+1好答案。我其實並沒有回答這個問題,因爲我得到的印象是OP想知道OpenGL實現(驅動程序)使用的CPU內存。否則(如果提到GPU內存),我不知道他應該怎麼看到「總內存似乎在上升」。 –
我正在使用mipmap,這應該比使用位圖紋理佔用內存50%多。但GL似乎同時使用RAM和視頻RAM – jondinham