Partager via


Méthode IDirect3D9 ::CreateDevice (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 désigne l’adaptateur d’affichage. D3DADAPTER_DEFAULT est toujours l’adaptateur d’affichage principal.

[in] DeviceType

Type : D3DDEVTYPE

Membre du D3DDEVTYPE type énuméré qui désigne 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êtré, ce paramètre peut avoir la valeur NULL uniquement si le membre hDeviceWindow de pPresentationParameters est défini sur une valeur valide et non NULL .

[in] BehaviorFlags

Type : DWORD

Combinaison d’une ou plusieurs options qui contrôlent la création d’appareils. 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 d’affichage de l’appareil en plein écran est défini dans l’ordre suivant :

  1. Clé de Registre ForcedRefreshRate non nulle spécifiée par l’utilisateur, si prise en charge par l’appareil.
  2. Valeur de taux d’actualisation différente de 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 si pris en charge par l’appareil.
  5. 60 hertz si l’appareil est pris en charge.
  6. Par défaut de l’appareil.
Un taux d’actualisation non pris en charge est par défaut le taux d’actualisation pris en charge le plus proche 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 un paramètre d’entrée et de sortie. L’appel de cette méthode peut changer plusieurs membres, notamment :

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

[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.

Remarques

Cette méthode retourne une interface d’appareil entièrement opérationnelle, définie sur le mode d’affichage requis (ou fenêtré) et allouée avec les mémoires tampons d’arrière-mémoire 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 a la valeur 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 à l’écran. Cette option est utilisée par Direct3D lorsque le contenu de la mémoire tampon arrière est copié dans la mémoire tampon avant pendant La présente.
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 pour 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 de focus.

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

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

Les méthodes Reset, IUnknown et TestCooperativeLevel doivent être appelées à partir du 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 arrière en mode fenêtré lors de l’appel de CreateDevice, Reset et 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êtré. 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

Condition requise Valeur
Plateforme cible Windows
En-tête d3d9.h (inclure D3D9.h)
Bibliothèque D3D9.lib

Voir aussi

D3DDEVICE_CREATION_PARAMETERS

Direct3DCreate9

IDirect3D9

Multihead (Direct3D 9)

Réinitialiser