Método IDirect3D9::CreateDevice (d3d9.h)

Crea un dispositivo para representar el adaptador de pantalla.

Sintaxis

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

Parámetros

[in] Adapter

Tipo: UINT

Número ordinal que indica el adaptador de pantalla. D3DADAPTER_DEFAULT siempre es el adaptador de pantalla principal.

[in] DeviceType

Tipo: D3DDEVTYPE

Miembro del D3DDEVTYPE tipo enumerado que denota el tipo de dispositivo deseado. Si el tipo de dispositivo deseado no está disponible, se producirá un error en el método.

[in] hFocusWindow

Tipo: HWND

La ventana de enfoque alerta a Direct3D cuando una aplicación cambia del modo de primer plano al modo en segundo plano. Vea la sección Comentarios.

  • Para el modo de pantalla completa, la ventana especificada debe ser una ventana de nivel superior.
  • En el modo con ventana, este parámetro puede ser NULL solo si el miembro hDeviceWindow de pPresentationParameters está establecido en un valor válido que no sea NULL .

[in] BehaviorFlags

Tipo: DWORD

Combinación de una o varias opciones que controlan la creación de dispositivos. Para obtener más información, consulte D3DCREATE.

[in, out] pPresentationParameters

Tipo: D3DPRESENT_PARAMETERS*

Puntero a una estructura de D3DPRESENT_PARAMETERS , que describe los parámetros de presentación para el dispositivo que se va a crear. Si BehaviorFlags especifica D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters es una matriz. Independientemente del número de encabezados que existen, solo se crea automáticamente una superficie de profundidad/galería de símbolos.

Para Windows 2000 y Windows XP, la frecuencia de actualización de la pantalla del dispositivo de pantalla completa se establece en el orden siguiente:

  1. Clave del Registro forcedRefreshRate especificada por el usuario, si es compatible con el dispositivo.
  2. Valor de frecuencia de actualización distinto de cero especificado por la aplicación en el parámetro presentation.
  3. Frecuencia de actualización del escritorio más reciente, si es compatible con el dispositivo.
  4. 75 hercios si es compatible con el dispositivo.
  5. 60 hercios si es compatible con el dispositivo.
  6. Valor predeterminado del dispositivo.
Una frecuencia de actualización no admitida tendrá como valor predeterminado la frecuencia de actualización admitida más cercana por debajo de ella. Por ejemplo, si la aplicación especifica 63 hercios, se usarán 60 hercios. No hay tasas de actualización admitidas por debajo de 57 hercios.

pPresentationParameters es una entrada y un parámetro de salida. Llamar a este método puede cambiar varios miembros, entre los que se incluyen:

  • Si BackBufferCount, BackBufferWidth y BackBufferHeight son 0 antes de llamar al método , se cambiarán cuando se devuelva el método.
  • Si BackBufferFormat es igual a D3DFMT_UNKNOWN antes de llamar al método , se cambiará cuando el método devuelva.

[out, retval] ppReturnedDeviceInterface

Tipo: IDirect3DDevice9**

Dirección de un puntero a la interfaz IDirect3DDevice9 devuelta, que representa el dispositivo creado.

Valor devuelto

Tipo: HRESULT

Si el método se ejecuta correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto puede ser uno de los siguientes: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY.

Comentarios

Este método devuelve una interfaz de dispositivo totalmente funcional, se establece en el modo de presentación necesario (o ventana) y se asigna con los búferes de reserva adecuados. Para comenzar la representación, la aplicación solo debe crear y establecer un búfer de profundidad (suponiendo que EnableAutoDepthStencil sea FALSE en D3DPRESENT_PARAMETERS).

Al crear un dispositivo Direct3D, se proporcionan dos parámetros de ventana diferentes: una ventana de foco (hFocusWindow) y una ventana de dispositivo (hDeviceWindow en D3DPRESENT_PARAMETERS). El propósito de cada ventana es:

  • La ventana de enfoque alerta a Direct3D cuando una aplicación cambia del modo de primer plano al modo de fondo (a través de Alt-Tab, un clic del mouse o algún otro método). Cada dispositivo creado por una aplicación comparte una sola ventana de enfoque.
  • La ventana del dispositivo determina la ubicación y el tamaño del búfer de reserva en pantalla. Esto lo usa Direct3D cuando el contenido del búfer de reserva se copia en el búfer frontal durante el presente.
Este método no se debe ejecutar durante el control de WM_CREATE. Una aplicación nunca debe pasar un identificador de ventana a Direct3D mientras controla WM_CREATE. Cualquier llamada para crear, liberar o restablecer el dispositivo debe realizarse con el mismo subproceso que el procedimiento de ventana de la ventana de enfoque.

Tenga en cuenta que D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING y D3DCREATE_SOFTWARE_VERTEXPROCESSING son marcas mutuamente excluyentes y se debe especificar al menos una de estas marcas de procesamiento de vértices al llamar a este método.

Los búferes de reserva creados como parte del dispositivo solo se pueden bloquear si se especifica D3DPRESENTFLAG_LOCKABLE_BACKBUFFER en los parámetros de presentación. (Los búferes de reserva multimuestreo y las superficies de profundidad nunca se pueden bloquear).

Los métodos Reset, IUnknown y TestCooperativeLevel deben llamarse desde el mismo subproceso que usó este método para crear un dispositivo.

D3DFMT_UNKNOWN se puede especificar para el formato de búfer de reserva del modo de ventana al llamar a CreateDevice, Reset y CreateAdditionalSwapChain. Esto significa que la aplicación no tiene que consultar el formato de escritorio actual antes de llamar a CreateDevice para el modo de ventana. Para el modo de pantalla completa, se debe especificar el formato de búfer de reserva.

Si intenta crear un dispositivo en una ventana de tamaño 0x0, se producirá un error en CreateDevice .

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

D3DDEVICE_CREATION_PARAMETERS

Direct3DCreate9

IDirect3D9

Multihead (Direct3D 9)

Reset