C 获取总视频内存大小
在互联网上,我发现有用于AMD和NVIDIA的OpenGL扩展来获取图形卡的内存信息。现在我试图得到总的视频内存大小,但结果总是得到0。这是我的代码的当前版本:C 获取总视频内存大小,c,opengl,nvidia,C,Opengl,Nvidia,在互联网上,我发现有用于AMD和NVIDIA的OpenGL扩展来获取图形卡的内存信息。现在我试图得到总的视频内存大小,但结果总是得到0。这是我的代码的当前版本: #include <GL/gl.h> #include <stdio.h> int main() { GLint total_memory; total_memory = 0; glGetIntegerv(0x9048, &total_memory); printf("
#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;
}
#包括
#包括
int main()
{
闪烁总记忆;
总内存=0;
glGetIntegerv(0x9048和总内存);
printf(“%i\n”,总内存);
返回0;
}
<操作系统是Linux,英伟达驱动程序版本是313.30。 < P>你应该总是检查是否有一个调用失败了。
在您的情况下,我认为在调用OpenGL函数之前需要一个有效的链接。在这篇文章中,您可以看到作者提供的3个链接,帮助您获得所需的内容 这似乎在很大程度上取决于您使用的图形卡类型和版本
您可能想考虑使用库GLW来处理扩展,使用像0x9048这样的常数是不可读的!您需要获取GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX和GL_VBO_FREE_MEMORY_ATI的值。有趣的是,glGetError()即使没有上下文也返回0。我的目标只是想知道这些特定于供应商的OpenGL扩展是否在当前的Linux系统上正常工作。我现在假设这是真的。如果我有更多的时间,我可能会对此进行更详细的阅读。NVidia扩展工作正常,我在Linux和Windows上都使用它们。我有额外的扩展GPU卡,然后是GLGEINTEGERV(0x9048,&total_内存);仅返回专用内存中的扩展GPU详细信息等,但不返回内置和扩展的组合,为什么?