Узнать модель видеокарты?
Вопрос
Мне было интересно, как я могу получить модель / марку видеокарты из кода, в частности, из DirectX 9.0c (из кода C ++).
Решение
Во время выполнения вы можете запросить модель устройства и поставщика:
В OpenGL используйте команду glGetString(GL_VENDOR) или GL_RENDERER или GL_VERSION, чтобы получить нужную информацию.
В DirectX 9 кажется, что информация находится в системе конфигурации Microsoft и запрашивается из базы данных устройств.Это раздел 3 этого документа, в котором также есть пример кода: http://msdn.microsoft.com/en-us/library/bb204848 (ПРОТИВ 85).aspx Используя ту же систему, вы можете получить такую информацию, как объем оперативной памяти видеокарты, номер драйвера и т.д.
Другие советы
Самый простой способ в DirectX - это через IDirect3D9::Получить идентификатор адаптера.
Просто создайте D3DADAPTER_IDENTIFIER9 - ИДЕНТИФИКАТОР D3DADAPTER_ID объект, передайте указатель на него в GetAdapterIdentifier.DirectX заполняет описание видеокарты в виде строки в поле Описание.Он также содержит информацию о том, на каком устройстве отображения установлена карта и какая у вас версия драйвера.
Вы получаете что-то вроде этого:
- Описание:"NVIDIA GeForce GTX 570"
- Устройство:"\.\ДИСПЛЕЙ 1"
- Водитель:"nvd3dum.dll "
Взгляните на Глава 2.Direct3D ( Direct3D ) из моей книги Графический конвейер Direct3D.Смотрите раздел 2.12, Идентификация конкретного устройства.
Вы можете использовать API "DirecX Diagnostic Tool", как в примере вывода DxDiagOutput из DX SDK http://msdn.microsoft.com/en-us/library/ee416986%28v=VS.85%29.aspx
IDirect3D9* d3dobject = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpresent;
memset(&d3dpresent, 0, sizeof(D3DPRESENT_PARAMETERS));
d3dpresent.Windowed = TRUE;
d3dpresent.SwapEffect = D3DSWAPEFFECT_DISCARD;
UINT adaptercount = d3dobject->GetAdapterCount();
D3DADAPTER_IDENTIFIER9* adapters = (D3DADAPTER_IDENTIFIER9*)malloc(sizeof(D3DADAPTER_IDENTIFIER9) * adaptercount);
for (int i = 0; i < adaptercount; i++)
{
d3dobject->GetAdapterIdentifier(i, 0, &(adapters[i]));
}
Затем получите описание адаптеров (adapters->Description)