Méthode IDirect3D9::CreateDevice (d3d9helper.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 type énuméré D3DDEVTYPE 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 :
- Clé de Registre ForcedRefreshRate non nulle spécifiée par l’utilisateur, si prise en charge par l’appareil.
- Valeur de taux d’actualisation différente de zéro spécifiée par l’application dans le paramètre de présentation.
- Taux d’actualisation du dernier bureau, s’il est pris en charge par l’appareil.
- 75 hertz si pris en charge par l’appareil.
- 60 hertz si l’appareil est pris en charge.
- Par défaut de l’appareil.
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.
Notes
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.
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.
Spécifications
Plateforme cible | Windows |
En-tête | d3d9helper.h (incluez D3D9.h) |
Bibliothèque | D3D9.lib |