首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取显卡或显存的API

获取显卡或显存的API
EN

Stack Overflow用户
提问于 2009-12-08 19:27:22
回答 3查看 5.7K关注 0票数 5

我想获取适配器RAM或图形RAM,您可以使用API在显示设置或设备管理器中看到它们。我在C++应用程序中。

我已经尝试过在网络上搜索,根据我的RnD,我得出的结论是,我们可以从名为DXGI_ADAPTER_DESC的1. DirectX SDK结构中获取图形内存信息。但是如果我不想使用DirectX应用程序接口怎么办?2. Win32_videocontroller :但是如果视频控制器处于离线状态,这个类并不总是给你提供adapterRAM信息。我已经在vista上检查过了。

有没有其他方法来获得图形内存?

EN

回答 3

Stack Overflow用户

发布于 2009-12-08 19:42:13

没有办法直接在windows上获取图形RAM,windows会阻止您这样做,因为它会保持对显示内容的控制。

但是,您可以创建DirectX设备。获取后台缓冲区表面,然后将其锁定。锁定后,你可以用任何你想要的东西填充它,然后解锁并调用present。不过,这很慢,因为您必须通过总线将视频内存复制回主存。一些卡还使用"swizzled“格式,在复制时必须对其进行非swizzled。这会增加你做这件事的时间,有些卡片甚至会禁止你这样做。

通常,您希望避免直接访问视频卡并让windows/DirectX为您绘制图形。在D3D1x下,我很确定你可以通过一个IDXGIOutput来完成。不过,这确实是需要努力避免的事情……

你可以通过标准的win32 (本例假设C语言)写一个线性数组,但这相当复杂。

首先,您需要线性数组。

代码语言:javascript
复制
    unsigned int* pBits = malloc( width * height );

然后,您需要创建一个位图,并将其选择到DC。

代码语言:javascript
复制
    HBITMAP hBitmap = ::CreateBitmap( width, height, 1, 32, NULL );
    SelectObject( hDC, (HGDIOBJ)hBitmap );

然后,您可以随意填充pBits数组。完成后,您可以设置位图的位。

代码语言:javascript
复制
    ::SetBitmapBits( hBitmap, width * height * 4, (void*)pBits )

使用完位图后,不要忘记删除它(使用DeleteObject)并释放您的线性数组!

编辑:只有一种方法可以可靠地获得视频ram,那就是通过DX Diag接口。看看DX中的IDxDiagProviderIDxDiagContainer

票数 4
EN

Stack Overflow用户

发布于 2012-06-11 17:49:37

Win32_videocontroller是获取gfx内存量的最佳途径。这就是在Doom3源码中是如何做到的。

你说“视频控制器的..availability离线了,我已经在vista上检查过了。”在什么情况下,视频控制器将脱机?

顺便说一句,you can find the Doom3 source here。您要查找的函数名为Sys_GetVideoRam,它在一个名为win_shared.cpp的文件中,但是如果您执行解决方案范围的搜索,它会为您找到它。

票数 2
EN

Stack Overflow用户

发布于 2009-12-08 23:45:47

用户模式线程无法访问从硬件设备映射的内存区域和I/O,包括帧缓冲区。不管怎么说,你想做什么呢?假设您可以直接访问帧缓冲区:现在您必须在帧缓冲区中处理许多可能的像素格式。您可以假定为32位RGBA或ARGB组织。可以使用15/16/24位显示器(RGBA555、RGBA5551、RGBA4444、RGBA565、RGBA888...)。这是如果你不想支持视频表面格式(覆盖),如基于YUV的。

因此,让显示驱动程序和/或子API来完成这项工作。

如果你想写到一个显示界面(它不完全等同于帧缓冲内存,尽管它在概念上几乎是一样的),有很多选择。DX、Win32或您可以尝试使用SDL库(libsdl)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1866371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档