opengl 无法获取可用的GPU内存

dl5txlt9  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(236)

我尝试用代码获取gpu可用内存

bool bMemInfo1 = GLEW_NVX_gpu_memory_info; // false
bool bMemInfo2 = glewIsSupported("GL_NVX_gpu_memory_info"); // false
bool bMemInfo3 = glewGetExtension("GL_NVX_gpu_memory_info"); // false

GLint info = 0;

glGetIntegerv(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, @info);

GLenum err = glGetError(); // 1280
if (GLEW_OK != err)
{
    cout << glewGetErrorString(err) << endl; // Unknown error
}

我不能在我的情况下这样做。你能解释为什么吗?有可能获得可用的GPU内存吗?

cgvd09ve

cgvd09ve1#

OpenGL早在3D GPU之前就被发明了。你尝试使用的这些东西是GL扩展,不是任何OpenGL标准的一部分。它们可能工作,也可能不工作,这取决于操作系统版本和GPU型号。
如果您使用的是Windows,请查看IDXGIAdapter::GetDesc()方法返回的DedicatedVideoMemory字段。
如果你在OSX上,你可以查询kIOFBMemorySizeKey值。
在Linux上,你就不走运了,操作系统没有公开一个一致的API来查询这些信息。有一些特定于设备的方法,这些方法取决于GPU型号,并且变化很大:lspci工具不适用于许多嵌入式SOC,nvidia-smi工具仅适用于nVidia,vkGetPhysicalDeviceMemoryProperties()功能需要支持Vulkan的GPU和驱动程序...

相关问题