Вопрос

Мне было интересно, как я могу получить модель / марку видеокарты из кода, в частности, из 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top