IDirect3D9::CreateDevice, méthode (d3d9.h)

Crée un appareil pour représenter l’adaptateur d’affichage.

Syntaxe

HRESULT CreateDevice(
  [in]          UINT                  Adapter,
  [in]          D3DDEVTYPE            DeviceType,
  [in]          HWND                  hFocusWindow,
  [in]          DWORD                 BehaviorFlags,
  [in, out]     D3DPRESENT_PARAMETERS *pPresentationParameters,
  [out, retval] IDirect3DDevice9      **ppReturnedDeviceInterface
);

Paramètres

[in] Adapter

Type : UINT

Nombre ordinal qui indique l’adaptateur d’affichage. D3DADAPTER_DEFAULT est toujours l’adaptateur d’affichage principal.

[in] DeviceType

Type : D3DDEVTYPE

Membre du type énuméré D3DDEVTYPE qui indique le type d’appareil souhaité. Si le type d’appareil souhaité n’est pas disponible, la méthode échoue.

[in] hFocusWindow

Type : HWND

La fenêtre focus alerte Direct3D lorsqu’une application passe du mode de premier plan au mode arrière-plan. Consultez la section Notes.

  • Pour le mode plein écran, la fenêtre spécifiée doit être une fenêtre de niveau supérieur.
  • Pour le mode fenêtre, ce paramètre peut être NULL uniquement si le membre hDeviceWindow de pPresentationParameters est défini sur une valeur valide non NULL .

[in] BehaviorFlags

Type : DWORD

Combinaison d’une ou plusieurs options qui contrôlent la création de l’appareil. Pour plus d’informations, consultez D3DCREATE.

[in, out] pPresentationParameters

Type : D3DPRESENT_PARAMETERS*

Pointeur vers une structure D3DPRESENT_PARAMETERS , décrivant les paramètres de présentation de l’appareil à créer. Si BehaviorFlags spécifie D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters est un tableau. Quel que soit le nombre de têtes qui existent, une seule surface de profondeur/gabarit est automatiquement créée.

Pour Windows 2000 et Windows XP, le taux d’actualisation de l’appareil plein écran est défini dans l’ordre suivant :

  1. Clé de Registre non spécifiée par l’utilisateur, si elle est prise en charge par l’appareil.
  2. Valeur de taux d’actualisation non zéro spécifiée par l’application dans le paramètre de présentation.
  3. Taux d’actualisation du dernier bureau, s’il est pris en charge par l’appareil.
  4. 75 hertz s’il est pris en charge par l’appareil.
  5. 60 hertz s’il est pris en charge par l’appareil.
  6. Par défaut de l’appareil.
Un taux d’actualisation non pris en charge est défini par défaut sur le taux d’actualisation le plus proche pris en charge en dessous. Par exemple, si l’application spécifie 63 hertz, 60 hertz sera utilisé. Il n’existe aucun taux d’actualisation pris en charge inférieur à 57 hertz.

pPresentationParameters est à la fois une entrée et un paramètre de sortie. L’appel de cette méthode peut modifier plusieurs membres, notamment :

  • Si BackBufferCount, BackBufferWidth et BackBufferHeight sont 0 avant l’appel de la méthode, ils seront modifiés lorsque la méthode retourne.
  • Si BackBufferFormat est égal D3DFMT_UNKNOWN avant l’appel de la méthode, elle sera modifiée lorsque la méthode retourne.

[out, retval] ppReturnedDeviceInterface

Type : IDirect3DDevice9**

Adresse d’un pointeur vers l’interface IDirect3DDevice9 retournée, qui représente l’appareil créé.

Valeur retournée

Type : HRESULT

Si la méthode réussit, la valeur de retour est D3D_OK. Si la méthode échoue, la valeur de retour peut être l’une des suivantes : D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY.

Notes

Cette méthode retourne une interface d’appareil entièrement opérationnelle, définie sur le mode d’affichage requis (ou fenêtre) et allouée avec les mémoires tampons arrière appropriées. Pour commencer le rendu, l’application doit uniquement créer et définir une mémoire tampon de profondeur (en supposant que EnableAutoDepthStencil est FALSE dans D3DPRESENT_PARAMETERS).

Lorsque vous créez un appareil Direct3D, vous fournissez deux paramètres de fenêtre différents : une fenêtre de focus (hFocusWindow) et une fenêtre d’appareil (hDeviceWindow dans D3DPRESENT_PARAMETERS). L’objectif de chaque fenêtre est :

  • La fenêtre focus alerte Direct3D lorsqu’une application passe du mode de premier plan au mode arrière-plan (via Alt-Tab, un clic de souris ou une autre méthode). Une fenêtre de focus unique est partagée par chaque appareil créé par une application.
  • La fenêtre de l’appareil détermine l’emplacement et la taille de la mémoire tampon arrière sur l’écran. Cela est utilisé par Direct3D lorsque le contenu de la mémoire tampon arrière est copié dans la mémoire tampon frontale pendant Le présent.
Cette méthode ne doit pas être exécutée pendant la gestion de WM_CREATE. Une application ne doit jamais passer un handle de fenêtre à Direct3D lors de la gestion des WM_CREATE. Tout appel à créer, libérer ou réinitialiser l’appareil doit être effectué à l’aide du même thread que la procédure de fenêtre de la fenêtre focus.

Notez que D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING et D3DCREATE_SOFTWARE_VERTEXPROCESSING sont des indicateurs mutuellement exclusifs, et au moins l’un de ces indicateurs de traitement de vertex doit être spécifié lors de l’appel de cette méthode.

Les mémoires tampons de retour créées dans le cadre de l’appareil ne sont verrouillables que si D3DPRESENTFLAG_LOCKABLE_BACKBUFFER est spécifiée dans les paramètres de présentation. (Les mémoires tampons arrière multi-ampées et les surfaces de profondeur ne sont jamais verrouillables.)

Les méthodes Reset, IUnknown et TestCooperativeLevel doivent être appelées à partir du même thread qui a utilisé cette méthode pour créer un appareil.

D3DFMT_UNKNOWN peut être spécifié pour le format de mémoire tampon du mode fenêtre lors de l’appel de CreateDevice, de réinitialisation et de CreateAdditionalSwapChain. Cela signifie que l’application n’a pas besoin d’interroger le format de bureau actuel avant d’appeler CreateDevice pour le mode fenêtre. Pour le mode plein écran, le format de mémoire tampon arrière doit être spécifié.

Si vous tentez de créer un appareil sur une fenêtre de taille 0x0, CreateDevice échoue.

Configuration requise

   
Plateforme cible Windows
En-tête d3d9.h (include D3D9.h)
Bibliothèque D3D9.lib

Voir aussi

D3DDEVICE_CREATION_PARAMETERS

Direct3DCreate9

IDirect3D9

Multihead (Direct3D 9)

Réinitialiser