Как получить общий объем памяти в байтах, используемый OpenGL в C++?
Как получить общий объем памяти в байтах, используемый OpenGL в C++?
Я создаю приложение OpenGL, и объем используемой памяти, кажется, растет, я могу получить информацию об общем объеме памяти, используемой переменными и объектами, созданными мной, но не могу гарантировать, сколько памяти использует OpenGL для своих переменных и объектов. текстур и т. д. Так можно ли получить общий объем памяти в байтах, используемый OpenGL в C++?
1 ответ
В общем, нет. OpenGL - это, в конечном счете, аппаратная абстракция. А OpenGL просто не предоставляет способ получить такую информацию.
Существуют специфичные для поставщика расширения, которые дадут вам способы задать вопрос, хотя то, что вы получите, зависит от архитектуры. Аппаратное обеспечение AMD обеспечивает расширение ATI_meminfo. Он разбивает память на типы объектов: буферные объекты, текстуры и рендер-буферы.
NVIDIA предоставляет экспериментальное расширение NVX_gpu_memory_info. В реестре нет информации о том, как его использовать, поэтому я не могу связать вас ни с чем.
В любом случае, самый эффективный способ узнать, что использует графический процессор, это просто отслеживать его самостоятельно. Всегда используйте внутренние форматы изображений с размерами; это означает, что вы можете вычислить довольно хорошую оценку того, сколько памяти занимает текстура. То же самое касается буферных объектов и так далее.
Вы не получите точные цифры, так как отступы, выравнивание и т.п. могут вас запутать. Но вы получите что-то довольно приличное.