Metodo IDirect3D9::CreateDevice (d3d9.h)
Crea un dispositivo per rappresentare la scheda 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
Numero ordinale che indica la scheda di visualizzazione. D3DADAPTER_DEFAULT è sempre la scheda di visualizzazione primaria.
[in] DeviceType
Tipo: D3DDEVTYPE
Membro del D3DDEVTYPE tipo enumerato che indica il tipo di dispositivo desiderato. Se il tipo di dispositivo desiderato non è disponibile, il metodo avrà esito negativo.
[in] hFocusWindow
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 null valido, non NULL.
[in] BehaviorFlags
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 il dispositivo da creare. Se BehaviorFlags specifica D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters è una matrice. Indipendentemente dal numero di teste esistenti, viene creata automaticamente una sola superficie di profondità/stencil.
Per Windows 2000 e Windows XP, la frequenza di aggiornamento dello schermo intero del dispositivo è impostata nell'ordine seguente:
- Chiave del Registro di sistema Nonzero ForcedRefreshRate specificata dall'utente, se supportata dal dispositivo.
- Valore della frequenza di aggiornamento diverso da zero specificato dall'applicazione nel parametro presentation.
- Frequenza di aggiornamento del desktop più recente, se supportata dal dispositivo.
- 75hz se supportato dal dispositivo.
- 60hz 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 a D3DFMT_UNKNOWN prima che venga chiamato il metodo, verrà modificato al termine del metodo.
[out, retval] ppReturnedDeviceInterface
Tipo: IDirect3DDevice9**
Indirizzo di un puntatore all'interfaccia di IDirect3DDevice9 restituita, che rappresenta il dispositivo creato.
Valore restituito
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.
Osservazioni
Questo metodo restituisce un'interfaccia del dispositivo completamente funzionante, impostata sulla modalità di visualizzazione richiesta (o finestra) 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 forniscono 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à in background (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 nascosto sullo schermo. Questa operazione viene usata da Direct3D quando il contenuto del buffer nascosto viene copiato nel buffer anteriore durante Presente.
Si noti che D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING e D3DCREATE_SOFTWARE_VERTEXPROCESSING sono flag che si escludono 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 viene specificato nei parametri di presentazione. I buffer back multicampionato e le superfici di profondità non sono mai bloccabili.
I metodi Reset, IUnknowne TestCooperativeLevel devono essere chiamati dallo stesso thread che usa questo metodo per creare un dispositivo.
D3DFMT_UNKNOWN può essere specificato per il formato back buffer in modalità finestra quando si chiama CreateDevice, Resete 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 back buffer.
Se si tenta di creare un dispositivo in una finestra di dimensioni 0x0, CreateDevice avrà esito negativo.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Finestre |
intestazione | d3d9.h (include D3D9.h) |
libreria | D3D9.lib |