Domanda

Mi chiedevo come posso ottenere il modello di scheda grafica / marca dal codice in particolare da DirectX 9.0c (dall'interno di codice C ++).

È stato utile?

Soluzione

In fase di runtime, è possibile interrogare il modello del dispositivo e vendor:

  • In OpenGL, utilizzare il comando glGetString (GL_VENDOR) o GL_RENDERER o GL_VERSION per ottenere le informazioni che stai cercando.

  • In DirectX 9, sembra che l'informazioni è nel sistema di configurazione di Microsoft, e viene interrogato dal database del dispositivo. E 'la sezione 3 del presente documento, che ha anche codice di esempio: http : //msdn.microsoft.com/en-us/library/bb204848 (VS.85) aspx Utilizzando lo stesso sistema è possibile ottenere informazioni come la quantità di RAM della scheda video ha, il numero pilota, ecc.

Altri suggerimenti

Il modo più semplice in DirectX è attraverso IDirect3D9 :: GetAdapterIdentifier .

Basta creare un D3DADAPTER_IDENTIFIER9 oggetto , passa un puntatore ad esso per GetAdapterIdentifier. DirectX compila la descrizione scheda grafica come una stringa nel campo Descrizione. Esso comprende anche informazioni su quale dispositivo di visualizzazione la carta è, e quale versione del driver che hai.

È possibile ottenere qualcosa di simile:

  • Descrizione: "NVIDIA GeForce GTX 570"
  • dispositivo: "\ \ DISPLAY1"
  • driver: "Nvd3dum.dll"

Date un'occhiata a Capitolo 2. Direct3D dal mio libro Il Direct3D Pipeline grafica . Vedere la sezione 2.12, Identificazione di un particolare dispositivo.

È possibile utilizzare API "DirecX Diagnostic Tool", come in DxDiagOutput campione 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]));
}

Quindi ottenere la descrizione di adattatori (adapters-> Descrizione)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top