Обнаружение доступной графической памяти на платформе Windows с использованием C ++ - PullRequest
4 голосов
/ 06 августа 2010

Я бы хотел определить, сколько графической памяти доступно. Я написал C ++ проект, который использует DirectShow.

Некоторые древние GFX-карты не могут правильно воспроизводить видео и используют четырехцветный режим. Если я пытаюсь выделить более одного видео окна, программа просто вылетает на этих машинах без предупреждения.

Это менее элегантно, и я хотел бы заранее определить доступную графическую память, чтобы я мог определить, достаточно ли у программы gfx mem для запуска.

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Действительно хитрый способ, который должен работать на XP и ниже, это прочитать реестр:

Например, я захожу в \ HKLM \ Hardware \ Devicemap \ Video и получаю GUID: {3468769C-3D6B-4BB1-85B6-7B5AE7F4E8F8}

Затем я получаю доступ к \ HKLM \ CCS \ Control \ Video и читаю «HardwareInformation.MemorySize» для этого устройства:

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Control \ Video {3468769C-3D6B-4BB1-85B6-7B5AE7F4E8F8}

Гораздо лучший подход (фактически рекомендуемый подход) заключается в использовании WMI:

GetVideoMemoryViaWMI

0 голосов
/ 06 августа 2010

8mb.IIRC это максимальная сумма согласно стандарту AGP.Вся дополнительная память на карте gfx была там, чтобы буферизовать основную память, чтобы она не проходила через шину.

Я был бы удивлен, если бы стандарт не был пересмотрен.

Если у вас действительно старые карты gfx для работы, вы можете попробовать посмотреть Расширения Video Bios (VBE).У этого есть метод для запроса памяти.

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