Metodo IDirect3D9::CreateDevice (d3d9.h)
Crea un dispositivo per rappresentare l'adattatore di visualizzazione.
Sintassi
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
Parametri
[in] Adapter
Tipo: UINT
Numero ordinale che indica l'adattatore di visualizzazione. D3DADAPTER_DEFAULT è sempre la scheda di visualizzazione primaria.
[in] DeviceType
Tipo: D3DDEVTYPE
Membro del tipo enumerato D3DDEVTYPE che indica il tipo di dispositivo desiderato. Se il tipo di dispositivo desiderato non è disponibile, il metodo avrà esito negativo.
[in] hFocusWindow
Tipo: HWND
La finestra dello stato attivo avvisa Direct3D quando un'applicazione passa dalla modalità in primo piano alla modalità in background. Vedere la sezione Osservazioni.
- Per la modalità schermo intero, la finestra specificata deve essere una finestra di primo livello.
- Per la modalità finestra, questo parametro può essere NULL solo se il membro hDeviceWindow di pPresentationParameters è impostato su un valore non NULL valido.
[in] BehaviorFlags
Tipo: DWORD
Combinazione di una o più opzioni che controllano la creazione del dispositivo. Per altre informazioni, vedere D3DCREATE.
[in, out] pPresentationParameters
Tipo: D3DPRESENT_PARAMETERS*
Puntatore a una struttura D3DPRESENT_PARAMETERS , che descrive i parametri di presentazione per la creazione del dispositivo. Se BehaviorFlags specifica D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters è una matrice. Indipendentemente dal numero di teste esistenti, viene creata automaticamente una superficie di profondità/stencil.
Per Windows 2000 e Windows XP, la frequenza di aggiornamento del dispositivo a schermo intero è impostata nell'ordine seguente:
- Chiave del Registro di sistema Nonzero ForzataRefreshRate specificata dall'utente, se supportata dal dispositivo.
- Valore della frequenza di aggiornamento non zero specificato dall'applicazione nel parametro di presentazione.
- Frequenza di aggiornamento del desktop più recente, se supportata dal dispositivo.
- 75 hertz se supportato dal dispositivo.
- 60 hertz se supportato dal dispositivo.
- Impostazione predefinita del dispositivo.
pPresentationParameters è sia un input che un parametro di output. La chiamata a questo metodo può modificare diversi membri, tra cui:
- Se BackBufferCount, BackBufferWidth e BackBufferHeight sono 0 prima che venga chiamato il metodo, verranno modificati quando il metodo restituisce.
- Se BackBufferFormat è uguale D3DFMT_UNKNOWN prima della chiamata al metodo, verrà modificato quando il metodo restituisce.
[out, retval] ppReturnedDeviceInterface
Tipo: IDirect3DDevice9**
Indirizzo di un puntatore all'interfaccia IDirect3DDevice9 restituita, che rappresenta il dispositivo creato.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, il valore restituito è D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere uno dei seguenti: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY.
Commenti
Questo metodo restituisce un'interfaccia del dispositivo completamente funzionante, impostata sulla modalità di visualizzazione richiesta (o finestrata) e allocata con i buffer back appropriati. Per iniziare il rendering, l'applicazione deve solo creare e impostare un buffer di profondità (presupponendo che EnableAutoDepthStencil sia FALSE in D3DPRESENT_PARAMETERS).
Quando si crea un dispositivo Direct3D, si specificano due parametri di finestra diversi: una finestra dello stato attivo (hFocusWindow) e una finestra del dispositivo (hDeviceWindow in D3DPRESENT_PARAMETERS). Lo scopo di ogni finestra è:
- La finestra dello stato attivo avvisa Direct3D quando un'applicazione passa dalla modalità in primo piano alla modalità di sfondo (tramite ALT-Tab, un clic del mouse o un altro metodo). Una singola finestra dello stato attivo viene condivisa da ogni dispositivo creato da un'applicazione.
- La finestra del dispositivo determina la posizione e le dimensioni del buffer indietro sullo schermo. Questa operazione viene usata da Direct3D quando il contenuto del buffer indietro viene copiato nel buffer anteriore durante present.
Si noti che D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING e D3DCREATE_SOFTWARE_VERTEXPROCESSING sono flag esclusivi a vicenda e almeno uno di questi flag di elaborazione dei vertici deve essere specificato quando si chiama questo metodo.
I buffer di backup creati come parte del dispositivo sono bloccabili solo se D3DPRESENTFLAG_LOCKABLE_BACKBUFFER è specificato nei parametri di presentazione. I buffer back multiampled e le superfici di profondità non sono mai bloccabili.
I metodi Reset, IUnknown e TestCooperativeLevel devono essere chiamati dallo stesso thread che ha usato questo metodo per creare un dispositivo.
D3DFMT_UNKNOWN può essere specificato per il formato del buffer back della modalità finestra quando si chiama CreateDevice, Reset e CreateAdditionalSwapChain. Ciò significa che l'applicazione non deve eseguire query sul formato desktop corrente prima di chiamare CreateDevice per la modalità finestra. Per la modalità schermo intero, è necessario specificare il formato del buffer indietro.
Se si tenta di creare un dispositivo in una finestra di dimensioni 0x0, CreateDevice avrà esito negativo.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3d9.h (includere D3D9.h) |
Libreria | D3D9.lib |