Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Cartões multihead são aqueles que têm um buffer e acelerador de quadros comuns, DACs (conversores digitais para analógicos) independentes e monitoram saídas. Esses dispositivos podem oferecer suporte a vários monitores muito mais utilizáveis do que um número semelhante de adaptadores de exibição heterogêneos.
Os cartões multihead são expostos na API como um único dispositivo de nível de API que pode conduzir várias cadeias de troca de tela inteira. Consequentemente, todos os recursos são compartilhados com todas as cabeças e cada cabeçalho tem exatamente os mesmos recursos. Cada cabeça pode ser definida como modos de exibição independentes. Você pode usar chamadas separadas para IDirect3DSwapChain9::P resent para atualizar cada cabeçalho. Você também pode usar uma chamada para IDirect3DDevice9::P resent para atualizar cada cabeça sequencialmente.
Nota
A atualização de cada cabeçalho não ocorre simultaneamente com uma única chamada para IDirect3DDevice9::P resent. As estatísticas presentes no Direct3D 9Ex podem usar a estrutura de D3DPRESENTSTATS para manter as atualizações para cada cabeça próxima uma da outra para limitar os efeitos de ruptura entre várias cabeças de adaptadores. Para obter informações sobre como sincronizar quadros de aplicativos de modelo de flip direct3D 9Ex, consulte Melhorias do Direct3D 9Ex.
Cada cadeia de troca para um dispositivo multihead deve ser de tela inteira. Quando um dispositivo entrou no modo multihead, ele deve permanecer em tela inteira. A transição de volta para o modo com janelas requer a destruição do dispositivo (exceto para a operação ALT+TAB-to-minimize normal).
O método antigo de dividir a memória de vídeo entre as cabeças e tratar cada cabeça como um acelerador totalmente independente ainda será um cenário de uso comum. Essa proposta não substitui esse mecanismo, a menos que o aplicativo tenha sido especificamente codificado para funcionar no modo multihead Direct3D 9.
Os drivers recebem conhecimento adequado para alternar entre os dois modos de operação.
Uma cabeça será chamada de cabeça mestra, e todas as outras cabeças no mesmo cartão serão chamadas de cabeças subordinadas. Se mais de um adaptador multihead estiver presente em um sistema, o mestre e seus subordinados de um adaptador multihead serão chamados de grupo. Os grupos são indicados pelo ordinal do adaptador de sua cabeça mestra.
A estrutura de D3DCAPS9 foi atualizada para expor as novas tampas de hardware a seguir.
UINT NumberOfAdaptersInGroup;
UINT MasterAdapterOrdinal;
UINT AdapterOrdinalInGroup;
- NumberOfAdaptersInGroup é 1 para adaptadores convencionais e maior que 1 para o adaptador mestre de um cartão multihead. O valor será 0 para um adaptador subordinado de um cartão multihead. Cada cartão pode ter no máximo um mestre, mas pode ter muitos subordinados.
- MasterAdapterOrdinal indica qual dispositivo é o mestre para esse subordinado.
- AdapterOrdinalInGroup indica a ordem na qual os cabeçalhos são referenciados pela API. O adaptador mestre sempre tem AdapterOrdinalInGroup 0. Esses valores não correspondem aos ordinais do adaptador passados para os métodos IDirect3D9, mas se aplicam apenas a cabeçalhos dentro de um grupo.
Essa definição permite que os cartões multihead continuem a apresentar vários adaptadores como se fossem cartões independentes, assim como fizeram no DirectX 8.
Para criar um dispositivo multihead, especifique o sinalizador de comportamento D3DCREATE_ADAPTERGROUP_DEVICE no IDirect3D9::CreateDevice. Os parâmetros de apresentação (uma matriz de D3DPRESENT_PARAMETERS) devem conter elementos NumberOfAdaptersInGroup. O runtime atribuirá cada elemento a cada cabeça na ordem numérica AdapterOrdinalInGroup. Quando D3DCREATE_ADAPTERGROUP_DEVICE é definido, cada parâmetro de apresentação deve ter:
- O membro com janela definido como FALSE (em outras palavras, ser tela inteira).
- O mesmo valor para o membro EnableAutoDepthStencil de D3DPRESENT_PARAMETERS.
Além disso, se EnableAutoDepthStencil for VERDADEIRO, cada um dos seguintes campos deverá ter o mesmo valor para cada D3DPRESENT_PARAMETERS:
- AutoDepthStencilFormat
- BackBufferWidth
- BackBufferHeight
- BackBufferFormat
Se o DAC estiver definido, as chamadas adicionais para IDirect3DDevice9::CreateAdditionalSwapChain serão ilegais.
Se o dispositivo tiver sido criado com o DAC, IDirect3DDevice9::Reset esperará uma matriz de D3DPRESENT_PARAMETERS.
Cada estrutura D3DPRESENT_PARAMETERS passada para IDirect3DDevice9::Reset deve estar em tela inteira. Para alternar de volta para o modo de janela, o aplicativo deve destruir o dispositivo e recriar um dispositivo não multihead no modo de janela.
Aqui está um cenário de uso básico:
1. Create multihead device
2. For each swap chain of device:
3. Call GetBackBuffer for the i-th swapchain
4. Call SetRenderTarget
5. Call DrawPrimitive
6. Optionally call swapchain::Present (or wait until
all swap chains are drawn and present outside of loop)
7. End the for loop
8. Optionally present all swap chains with device::Present
Para obter mais informações, consulte IDirect3D9::CreateDevice e IDirect3DDevice9::GetNumberOfSwapChains.
Tópicos relacionados