stiamo lottando con il seguente problema su computer portatili con grafica commutabile (AMD Radeon 7670M + Intel 4000) nella nostra applicazione WPF:
livello di programmazione determinare se il sistema ha una grafica commutabile
Il D3DImage che utilizziamo per visualizzare alcuni video mostra solo una cornice nera. Ciò si verifica solo quando la grafica discreta (AMD) è attiva per l'applicazione (modalità impostata su prestazioni elevate). Con la grafica Intel attiva (modalità impostata per il risparmio energetico) funziona. Sembra che non siamo soli con questo problema. Una ricerca su Google ha rivelato i seguenti messaggi nei forum di AMD:
- URGENT: switchable graphics and resources sharing
- D3DImage do not show up when configure the switable graphics to Radeon Adapter
ho trovato una soluzione utilizzando D3DImage.CopyBackBuffer - sembra che il backbuffer effettivamente contiene la giusta cornice - quindi proverò a mostrarlo.
Ma per applicare questa soluzione alternativa solo quando è necessario, questo mi porta all'argomento di questa domanda: Come faccio a sapere se il sistema in realtà ha una grafica selezionabile?
Suppongo che potrebbero esserci modi per utilizzare WMI o consultare il registro, ma sarei molto felice se qualcuno potesse indicarmi la giusta direzione o magari avere un esempio su come farlo.
Aggiornamento:
ho cercato EnumDisplayDevices e System.Management.ManagementObjectSearcher. Il primo non restituisce tutti i dispositivi mentre quest'ultimo lo fa. Ma forse c'è ancora un modo migliore?