2009-11-13 99 views
0

我需要确定一个系统的图形卡具有多少VRAM。我知道为什么我不应该但我做的所有原因。它不需要是完美的(有些卡片等等),但我需要一个球场。在mac上,通过核心图形和IOKit相当简单,只是有礼貌地问一下显示器连接了多少VRAM,但我对Windows没有任何线索。我怀疑的DirectX能告诉我莫名其妙,因为输入dxdiag有一个公平的猜测......确定窗口上的VRAM大小

再次,我知道我不应该需要知道,但我做的。

任何帮助将非常感激。

回答

1

简答:没有可靠的方法来获取此信息。

龙答:

有很多种,不推荐使用的方式来获取这些信息。就像打开一个旧的DirectDraw界面并查询可用的视频内存一样。但是这个数字可能包含AGP内存,统一内存或者它可能不包含它。或者你甚至可能会得到一个硬编码到驱动程序中的虚拟值。

我知道你已经知道查询这个号码是一个坏主意,但让我再总结一下对于其他读者:

你想在首位的数字做什么?作为一名应用程序员,您对如何使用视频内存的控制非常有限。您不以任何方式分配或管理内存。司机正在为你做这件事。让您的代码意识到“假”可用内存将导致严重问题。

你可能会认为你可以使用可用内存来决定多少纹理会融入显存,但是这是一个错误的假设。一些卡片对于如何使用存储器有非常奇怪的要求。我知道某些细节的一张特定的卡片对于任何4kb的mipmap都有最小的尺寸。

因此,如果你将加载一个8×8的8位纹理到内存中可能预计需要85个字节(8 * 8 + 4 + 4 + 2 + 2 + 1)。在驱动程序完成上传作业后,它的大小将是12kb(4 * 4kb)。你的估计会超过一百倍。

这同样适用于顶点和索引缓冲区,渲染目标,着色器等。

这就是为什么这个信息没有得到暴露了应用程序的原因。它在过去遇到了很多问题。的答复

+0

谢谢,这是一些很多很多的原因,这是一个坏主意用这个号码在首位打一个漂亮的夏日。 我个人需要这个数字的原因是:估计纹理质量,并估计一次可以使用的纹理数量(已知大小)。知道我有一张256mb卡与一张32mb卡将大幅改变我加载的纹理质量或我试图一次显示的数字。 简而言之,我的用户是愚蠢的。他们不能用高质量的滑块玩,直到他们获得了很好的价值。它必须开箱即用。 – ima747 2009-11-13 18:14:47

+0

尽管玩这个号码不好的原因不能说得过头,但有些时候,即使是粗略和不准确的猜测总比没有好。 – ima747 2009-11-13 18:15:45