2009-03-25 3 views
3

Mit Direct3D9 kann ich die verfügbaren Adapter mit IDirect3D9::GetAdapterCount() zählen. Dies ergibt jedoch die Anzahl der Ausgänge, d. H. 2 für eine einzelne Dual-Head-Grafikkarte. Mit Win32-API, kann ich die Anzeigevorrichtungen aufzählen und die Monitore mit dem folgenden Code-Schnipsel angehängt:Wie kann ich feststellen, welche Displays mit Direct3D9 an dasselbe physische Gerät angeschlossen sind?

DISPLAY_DEVICE displayDevice; 
::ZeroMemory(&displayDevice, sizeof(displayDevice)); 
displayDevice.cb = sizeof(displayDevice); 

/* Enumerate adapters. */ 
for (UINT i = 0; ::EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) { 

    /* Enumerate the monitors. */ 
    for (UINT j = 0; ::EnumDisplayDevices(displayDevice.DeviceName, j, 
      &displayDevice, 0); j++) { 
     // Do stuff here 
    } 
} 

Meine Fragen sind: Gibt es ein Äquivalent für das in D3D, die auch richtig funktioniert, wenn ich die D3D-Gerät danach erstellen mit D3DCREATE_ADAPTERGROUP_DEVICE? Wenn nicht, gibt es irgendwelche Annahmen, die ich über die Aufzählungsreihenfolge der Geräte machen kann, die ich verwenden kann, um die Win32-API-Ergebnisse mit D3D-Adaptern zu vergleichen? Mit anderen Worten: Ist der Direct3D-Adapter 0 garantiert der erste Adapter, der von EnumDisplayDevices zurückgegeben wird?

Zusatz: Ich habe gerade herausgefunden, dass ich den Gerätenamen von D3DADAPTER_IDENTIFIER9 mit dem Gerätenamen von Win32 übereinstimmen konnte. Gibt es jedoch eine Möglichkeit, nur die physischen Geräte von D3D zu bekommen?

Antwort

2

Wenn jemand interessiert ist, habe ich herausgefunden, wie es geht: NumberOfAdaptersInGroup im D3DCAPS9 enthält die Anzahl der Ausgänge für den Master einer Adaptergruppe (physikalisches Gerät mit mehreren Swap-Ketten) und ist Null für untergeordnete ("nicht -physikalische "Adapter". MSDN-Status:

NumberOfAdaptersInGroup ist 1 für herkömmliche Adapter und größer als 1 für den Masteradapter einer Multihead-Karte. Der Wert ist 0 für einen untergeordneten Adapter einer Multihead-Karte. Jede Karte kann höchstens einen Master haben, aber viele Untergeordnete.

Verwandte Themen