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:

  1. Chiave del Registro di sistema Nonzero ForzataRefreshRate specificata dall'utente, se supportata dal dispositivo.
  2. Valore della frequenza di aggiornamento non zero specificato dall'applicazione nel parametro di presentazione.
  3. Frequenza di aggiornamento del desktop più recente, se supportata dal dispositivo.
  4. 75 hertz se supportato dal dispositivo.
  5. 60 hertz se supportato dal dispositivo.
  6. Impostazione predefinita del dispositivo.
Una frequenza di aggiornamento non supportata verrà predefinita con la frequenza di aggiornamento più vicina al di sotto di essa. Ad esempio, se l'applicazione specifica 63 hertz, verrà usato 60 hertz. Non ci sono tariffe di aggiornamento supportate al di sotto di 57 hertz.

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.
Questo metodo non deve essere eseguito durante la gestione di WM_CREATE. Un'applicazione non deve mai passare un handle di finestra a Direct3D durante la gestione di WM_CREATE. Qualsiasi chiamata a creare, rilasciare o reimpostare il dispositivo deve essere eseguita usando lo stesso thread della procedura della finestra dello stato attivo.

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

Vedi anche

D3DDEVICE_CREATION_PARAMETERS

Direct3DCreate9

IDirect3D9

Multihead (Direct3D 9)

Reimpostazione