【问题标题】:Getting the total video memory size获取总显存大小
【发布时间】:2013-05-15 09:00:02
【问题描述】:

在网上我发现有AMD和NVIDIA的OpenGL扩展来获取显卡的内存信息。现在我正在尝试获取总视频内存大小,但结果总是为 0。这是我的代码的当前版本:

#include <GL/gl.h>
#include <stdio.h>

int main()
{
    GLint total_memory;

    total_memory = 0;
    glGetIntegerv(0x9048, &total_memory);
    printf("%i\n", total_memory);
    return 0;
}

操作系统为Linux,NVIDIA驱动版本为313.30。

【问题讨论】:

  • 您可能要考虑使用库 GLEW 来处理扩展,使用像 0x9048 这样的常量不是很可读!您需要获取 GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX 和 GL_VBO_FREE_MEMORY_ATI 的值。

标签: c opengl nvidia


【解决方案1】:

如果呼叫似乎失败,您应该始终与 glGetError() 联系。

在您的情况下,我认为您需要一个有效的OpenGL context 才能调用 OpenGL 函数。

【讨论】:

  • 有趣的是,即使没有上下文,glGetError() 也会返回 0。我的目标只是了解这些供应商特定的 OpenGL 扩展是否在当前的 Linux 系统上正常工作。我现在假设这是真的。如果我有更多时间,我可能会对此进行更详细的阅读。
  • NVidia 扩展工作正常,我在 Linux 和 Windows 上都使用这些
  • 我有额外的扩展GPU卡,然后glGetIntegerv(0x9048, &total_memory);仅返回专用内存等中扩展的 GPU 详细信息,但不返回内置和扩展的组合,为什么?
【解决方案2】:

在这篇文章中,您可以看到作者提供的 3 个链接,帮助您获得想要的东西。

看来这很大程度上取决于你使用的是什么类型的显卡和版本...

https://gamedev.stackexchange.com/a/3347

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多