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:
- Clave del Registro forcedRefreshRate especificada por el usuario, si es compatible con el dispositivo.
- Valor de frecuencia de actualización distinto de cero especificado por la aplicación en el parámetro presentation.
- Frecuencia de actualización del escritorio más reciente, si es compatible con el dispositivo.
- 75 hercios si es compatible con el dispositivo.
- 60 hercios si es compatible con el dispositivo.
- Valor predeterminado del dispositivo.
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.
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 |