Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le applicazioni possono eseguire query sull'hardware per rilevare i tipi di dispositivo Direct3D supportati. Questa sezione contiene informazioni sulle attività principali coinvolte nell'enumerazione delle schede di visualizzazione e nella selezione dei dispositivi Direct3D.
Un'applicazione deve eseguire una serie di attività per selezionare un dispositivo Direct3D appropriato. Si noti che i passaggi seguenti sono destinati a un'applicazione a schermo intero e che, nella maggior parte dei casi, un'applicazione con finestra può ignorare la maggior parte di questi passaggi.
Inizialmente, l'applicazione deve enumerare gli adattatori display nel sistema. Un adattatore è un componente hardware fisico. Si noti che la scheda grafica potrebbe contenere più di un singolo adattatore, come nel caso di un display a doppio schermo. Le applicazioni che non riguardano il supporto per più monitor possono ignorare questo passaggio e passare D3DADAPTER_DEFAULT al metodo IDirect3D9::EnumAdapterModes nel passaggio 2.
Per ogni adattatore, l'applicazione enumera le modalità di visualizzazione supportate chiamando IDirect3D9::EnumAdapterModes.
Se necessario, l'applicazione verifica la presenza di accelerazione hardware in ogni modalità di visualizzazione enumerata chiamando IDirect3D9::CheckDeviceType, come illustrato nell'esempio di codice seguente. Si noti che questo è solo uno dei possibili usi per IDirect3D9::CheckDeviceType; per informazioni dettagliate, vedere Determinazione del supporto hardware (Direct3D 9).
D3DPRESENT_PARAMETERS Params; // Initialize values for D3DPRESENT_PARAMETERS members. Params.BackBufferFormat = D3DFMT_X1R5G5B5; if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter, Device.m_DevType, Params.BackBufferFormat, Params.BackBufferFormat, FALSE))) return E_FAIL;L'applicazione verifica il livello di funzionalità desiderato per il dispositivo su questo adattatore chiamando il metodo IDirect3D9::GetDeviceCaps. La funzionalità restituita da questo metodo è garantita come costante per un dispositivo in tutte le modalità di visualizzazione, verificata da IDirect3D9::CheckDeviceType.
I dispositivi possono sempre eseguire il rendering sulle superfici del formato di una modalità di visualizzazione enumerata supportata dal dispositivo. Se l'applicazione deve eseguire il rendering su una superficie di un formato diverso, può chiamare IDirect3D9::CheckDeviceFormat. Se il dispositivo può eseguire il rendering nel formato, è garantito che tutte le funzionalità restituite da IDirect3D9::GetDeviceCaps sono applicabili.
Infine, l'applicazione può determinare se le tecniche di multicampionamento, ad esempio l'antialiasing full-scene, sono supportate per un formato di rendering usando il metodo IDirect3D9::CheckDeviceMultiSampleType.
Dopo aver completato i passaggi precedenti, l'applicazione deve avere un elenco di modalità di visualizzazione in cui può funzionare. Il passaggio finale consiste nel verificare che sia disponibile una quantità sufficiente di memoria accessibile dal dispositivo per supportare il numero necessario di buffer e antialiasing. Questo test è necessario perché l'utilizzo della memoria per la combinazione di modalità e multisample è impossibile da stimare senza verificarlo. Inoltre, alcune architetture di adattatori grafici potrebbero non avere una quantità costante di memoria accessibile dal dispositivo. Ciò significa che un'applicazione deve essere in grado di segnalare errori di mancanza di memoria video durante il passaggio alla modalità schermo intero. In genere, un'applicazione deve rimuovere la modalità a schermo intero dall'elenco delle modalità offerte a un utente oppure deve tentare di utilizzare meno memoria riducendo il numero di buffer nascosto o usando una tecnica di multicampionamento meno complessa.
Un'applicazione con finestra esegue un set di attività simile.
- Determina il rettangolo desktop coperto dall'area client della finestra.
- Enumera gli adattatori, cercando l'adattatore il cui monitor copre l'area cliente. Se l'area client è di proprietà di più di un adattatore, l'applicazione può scegliere di controllare ogni adattatore in modo indipendente, o di controllare un singolo adattatore e di trasferire i pixel tramite Direct3D da un dispositivo a un altro al momento della presentazione. L'applicazione può anche ignorare due passaggi precedenti e usare l'adattatore D3DADAPTER_DEFAULT. Si noti che questo potrebbe comportare un'operazione più lenta quando la finestra viene posizionata su un monitor secondario.
- L'applicazione deve chiamare IDirect3D9::CheckDeviceType per determinare se il dispositivo può supportare il rendering in un buffer nascosto del formato specificato in modalità desktop.
IDirect3D9::GetAdapterDisplayMode può essere usato per determinare il formato di visualizzazione del desktop, come illustrato nell'esempio di codice seguente.
D3DPRESENT_PARAMETERS Params; // Initialize values for D3DPRESENT_PARAMETERS members. // Use the current display mode. D3DDISPLAYMODE mode; if(FAILED(m_pD3D->GetAdapterDisplayMode(Device.m_uAdapter , &mode))) return E_FAIL; Params.BackBufferFormat = mode.Format; if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter, Device.m_DevType, Params.BackBufferFormat, Params.BackBufferFormat, FALSE))) return E_FAIL;
Argomenti correlati