Método IDirect3D9::CreateDevice (d3d9.h)
Cria um dispositivo para representar o adaptador de exibição.
Sintaxe
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 o adaptador de exibição. D3DADAPTER_DEFAULT é sempre o adaptador de exibição principal.
[in] DeviceType
Tipo: D3DDEVTYPE
Membro do D3DDEVTYPE tipo enumerado que indica o tipo de dispositivo desejado. Se o tipo de dispositivo desejado não estiver disponível, o método falhará.
[in] hFocusWindow
Tipo: HWND
A janela de foco alerta o Direct3D quando um aplicativo muda do modo de primeiro plano para o modo em segundo plano. Consulte Observações.
- Para o modo de tela inteira, a janela especificada deve ser uma janela de nível superior.
- Para o modo em janela, esse parâmetro poderá ser NULL somente se o membro hDeviceWindow de pPresentationParameters for definido como um valor válido, não NULL .
[in] BehaviorFlags
Tipo: DWORD
Combinação de uma ou mais opções que controlam a criação do dispositivo. Para obter mais informações, consulte D3DCREATE.
[in, out] pPresentationParameters
Tipo: D3DPRESENT_PARAMETERS*
Ponteiro para uma estrutura D3DPRESENT_PARAMETERS , descrevendo os parâmetros de apresentação para o dispositivo a ser criado. Se BehaviorFlags especificar D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters será uma matriz. Independentemente do número de cabeças existentes, apenas uma superfície de profundidade/estêncil é criada automaticamente.
Para Windows 2000 e Windows XP, a taxa de atualização de exibição do dispositivo em tela inteira é definida na seguinte ordem:
- Chave do Registro ForcedRefreshRate não especificada pelo usuário, se compatível com o dispositivo.
- Valor de taxa de atualização diferente de zero especificado pelo aplicativo no parâmetro de apresentação.
- Taxa de atualização da área de trabalho mais recente, se compatível com o dispositivo.
- 75 hertz se compatível com o dispositivo.
- 60 hertz se compatível com o dispositivo.
- Padrão do dispositivo.
pPresentationParameters é um parâmetro de entrada e de saída. Chamar esse método pode alterar vários membros, incluindo:
- Se BackBufferCount, BackBufferWidth e BackBufferHeight forem 0 antes do método ser chamado, eles serão alterados quando o método retornar.
- Se BackBufferFormat for igual a D3DFMT_UNKNOWN antes do método ser chamado, ele será alterado quando o método retornar.
[out, retval] ppReturnedDeviceInterface
Tipo: IDirect3DDevice9**
Endereço de um ponteiro para a interface IDirect3DDevice9 retornada, que representa o dispositivo criado.
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser um dos seguintes: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE D3DERR_OUTOFVIDEOMEMORY.
Comentários
Esse método retorna uma interface de dispositivo totalmente funcional, definida como o modo de exibição necessário (ou em janelas) e alocada com os buffers traseiros apropriados. Para começar a renderizar, o aplicativo precisa apenas criar e definir um buffer de profundidade (supondo que EnableAutoDepthStencil seja FALSE em D3DPRESENT_PARAMETERS).
Ao criar um dispositivo Direct3D, você fornece dois parâmetros de janela diferentes: uma janela de foco (hFocusWindow) e uma janela do dispositivo (o hDeviceWindow em D3DPRESENT_PARAMETERS). A finalidade de cada janela é:
- A janela de foco alerta o Direct3D quando um aplicativo muda do modo de primeiro plano para o modo de fundo (por meio de Alt-Tab, um clique do mouse ou algum outro método). Uma única janela de foco é compartilhada por cada dispositivo criado por um aplicativo.
- A janela do dispositivo determina o local e o tamanho do buffer traseiro na tela. Isso é usado pelo Direct3D quando o conteúdo do buffer traseiro é copiado para o buffer frontal durante o Presente.
Observe que D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING e D3DCREATE_SOFTWARE_VERTEXPROCESSING são sinalizadores mutuamente exclusivos e pelo menos um desses sinalizadores de processamento de vértice deve ser especificado ao chamar esse método.
Os buffers traseiros criados como parte do dispositivo só serão bloqueados se D3DPRESENTFLAG_LOCKABLE_BACKBUFFER for especificado nos parâmetros de apresentação. (Buffers traseiros com várias amostras e superfícies de profundidade nunca são bloqueáveis.)
Os métodos Reset, IUnknown e TestCooperativeLevel devem ser chamados do mesmo thread que usou esse método para criar um dispositivo.
D3DFMT_UNKNOWN pode ser especificado para o formato de buffer de back do modo em janela ao chamar CreateDevice, Reset e CreateAdditionalSwapChain. Isso significa que o aplicativo não precisa consultar o formato da área de trabalho atual antes de chamar CreateDevice para o modo em janela. Para o modo de tela inteira, o formato de buffer traseiro deve ser especificado.
Se você tentar criar um dispositivo em uma janela dimensionada 0x0, CreateDevice falhará.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d9.h (inclua D3D9.h) |
Biblioteca | D3D9.lib |