使用C ++检测Windows平台上的可用图形内存

时间:2010-08-06 07:37:03

标签: c++ visual-c++ graphics memory-management 3d

我希望能够检测出可用的图形内存量。我编写了一个使用DirectShow的C ++项目。

一些古老的gfx卡无法正常播放视频并退回到四色模式。如果我尝试分配多个视频窗口,程序会在没有警告的情况下在这些机器上崩溃。

这不太优雅,我想提前检测可用的图形内存,所以我可以确定程序是否有足够的gfx内存来运行。

2 个答案:

答案 0 :(得分:1)

应该在XP及更低版本上运行的一种非常偷偷摸摸的方式是阅读注册表:

例如,我访问\ HKLM \ Hardware \ Devicemap \ Video并获取GUID:   {3468769C-3D6B-4BB1-85B6-7B5AE7F4E8F8}

然后我访问\ HKLM \ CCS \ Control \ Video,并为该设备读取“HardwareInformation.MemorySize”:

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \控制\视频{3468769C-3D6B-4BB1-85B6-7B5AE7F4E8F8}

更好的方法(事实上推荐的方法)是使用WMI:

GetVideoMemoryViaWMI

答案 1 :(得分:0)

8MB。 IIRC这是根据AGP标准的最大数量。 gfx卡上的所有额外内存用于缓冲主内存,因此无需通过总线。

如果标准没有修改,我会感到惊讶。

如果你有非常老的gfx卡可以使用,你可以尝试查看Video Bios Extensions(VBE)。这有一种查询内存的方法。