Я хочу программно определить во время выполнения, сколько памяти видеокарты используется моей программой. В частности, мне интересно, как это сделать на компьютере под управлением Windows с использованием OpenGL, но меня интересуют способы сделать это и на других платформах.
Я знаю, что есть утилиты, которые будут показывать использование памяти во время работы моей программы, но я хочу иметь возможность запрашивать эту информацию из моего кода.
Ответы:
Вы можете найти видеопамять карты Nvidia с помощью расширения NVX_gpu_memory_info или карты ATI с помощью ATI_meminfo . Вот фрагмент кода, который я нашел, чтобы вы могли начать.
Однако Пол Неттл из Flipcode задается вопросом, почему нужно искать доступную видеопамять, говоря :
И продолжает объяснять, по сути, что «объем видеопамяти» на самом деле ничего не может значить . Я согласен с ним в том, что, например, объем «свободной» памяти на компьютере с Windows Vista / 7 не имеет значения; надеюсь, свободной памяти нет, потому что свободная память тратится впустую. Но всегда есть области памяти, предназначенные для кэшей, которые очищаются Windows, если они нужны приложению.
источник