Как получить общий объем памяти в байтах, используемый OpenGL в C++?

Как получить общий объем памяти в байтах, используемый OpenGL в C++?

Я создаю приложение OpenGL, и объем используемой памяти, кажется, растет, я могу получить информацию об общем объеме памяти, используемой переменными и объектами, созданными мной, но не могу гарантировать, сколько памяти использует OpenGL для своих переменных и объектов. текстур и т. д. Так можно ли получить общий объем памяти в байтах, используемый OpenGL в C++?

1 ответ

Решение

В общем, нет. OpenGL - это, в конечном счете, аппаратная абстракция. А OpenGL просто не предоставляет способ получить такую ​​информацию.

Существуют специфичные для поставщика расширения, которые дадут вам способы задать вопрос, хотя то, что вы получите, зависит от архитектуры. Аппаратное обеспечение AMD обеспечивает расширение ATI_meminfo. Он разбивает память на типы объектов: буферные объекты, текстуры и рендер-буферы.

NVIDIA предоставляет экспериментальное расширение NVX_gpu_memory_info. В реестре нет информации о том, как его использовать, поэтому я не могу связать вас ни с чем.

В любом случае, самый эффективный способ узнать, что использует графический процессор, это просто отслеживать его самостоятельно. Всегда используйте внутренние форматы изображений с размерами; это означает, что вы можете вычислить довольно хорошую оценку того, сколько памяти занимает текстура. То же самое касается буферных объектов и так далее.

Вы не получите точные цифры, так как отступы, выравнивание и т.п. могут вас запутать. Но вы получите что-то довольно приличное.

Другие вопросы по тегам