Как получить общий объем памяти в байтах, используемый OpenGL в C ++? - PullRequest
8 голосов
/ 04 октября 2011

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

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

1 Ответ

7 голосов
/ 04 октября 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...