Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Placas multihead são aquelas que têm um buffer de quadros e acelerador comuns, conversores digitais para analógicos independentes (DACs) e saídas de monitor. Esses dispositivos podem oferecer muito mais suporte a vários monitores utilizáveis do que um número semelhante de adaptadores de vídeo heterogêneos.
As placas multihead são expostas na API como um único dispositivo de nível de API que pode acionar várias cadeias de permuta de tela cheia. Consequentemente, todos os recursos são compartilhados com todas as cabeças, e cada cabeça tem exatamente as mesmas capacidades. Cada cabeça pode ser ajustada para 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.
Observação
A atualização de cada cabeça não ocorre simultaneamente com uma única chamada para IDirect3DDevice9::P resent. As estatísticas presentes no Direct3D 9Ex podem usar a estrutura D3DPRESENTSTATS para manter as atualizações de cada cabeça próximas umas das outras para limitar os efeitos de rasgamento em várias cabeças de adaptadores. Para obter informações sobre como sincronizar quadros de aplicativos de modelo de inversão do Direct3D 9Ex, consulte Aprimoramentos do Direct3D 9Ex.
Cada cadeia de permuta para um dispositivo multihead deve ser tela cheia. Quando um dispositivo entra no modo multihead, ele deve permanecer em tela cheia. A transição de volta para o modo de janela requer a destruição do dispositivo (exceto para a operação normal ALT + TAB para minimizar).
O antigo método 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. Esta proposta não substitui esse mecanismo, a menos que a aplicação tenha sido especificamente codificada para funcionar no modo de cabeça múltipla Direct3D 9.
Os condutores dispõem de conhecimentos adequados para alternar entre os dois modos de funcionamento.
Uma cabeça será chamada de cabeça mestra, e todas as outras cabeças na mesma carta serão chamadas cabeças subordinadas. Se mais de um adaptador de cabeça múltipla estiver presente em um sistema, o mestre e seus subordinados de um adaptador de cabeça múltipla são chamados de grupo. Os grupos são indicados pelo ordinal do adaptador de sua cabeça principal.
A estrutura D3DCAPS9 foi atualizada para expor os novos limites de hardware a seguir.
UINT NumberOfAdaptersInGroup;
UINT MasterAdapterOrdinal;
UINT AdapterOrdinalInGroup;
- NumberOfAdaptersInGroup é 1 para adaptadores convencionais e maior que 1 para o adaptador mestre de uma placa multihead. O valor será 0 para um adaptador subordinado de uma placa multihead. Cada carta pode ter no máximo um mestre, mas pode ter muitos subordinados.
- MasterAdapterOrdinal indica qual dispositivo é o mestre para este 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.
Esta definição permite que as placas multihead continuem a apresentar vários adaptadores como se fossem placas independentes, tal como acontecia no DirectX 8.
Para criar um dispositivo multicabeça, especifique o sinalizador de comportamento D3DCREATE_ADAPTERGROUP_DEVICE em IDirect3D9::CreateDevice. Os parâmetros de apresentação (uma matriz de D3DPRESENT_PARAMETERS) devem conter elementos NumberOfAdaptersInGroup. O tempo de execução atribuirá cada elemento a cada head na ordem numérica AdapterOrdinalInGroup. Quando D3DCREATE_ADAPTERGROUP_DEVICE é definido, cada parâmetro de apresentação deve ter:
- O membro Windowed definido como FALSE (em outras palavras, ser tela cheia).
- O mesmo valor para o membro EnableAutoDepthStencil do D3DPRESENT_PARAMETERS.
Além disso, se EnableAutoDepthStencil for TRUE, cada um dos seguintes campos deve ter o mesmo valor para cada D3DPRESENT_PARAMETERS:
- AutoDepthStencilFormat
- BackBufferWidth
- BackBufferHeight
- BackBufferFormat
Se o DAC estiver definido, chamadas adicionais para IDirect3DDevice9::CreateAdditionalSwapChain são ilegais.
Se o dispositivo foi criado com o DAC, IDirect3DDevice9::Reset esperará uma matriz de D3DPRESENT_PARAMETERS.
Cada estrutura D3DPRESENT_PARAMETERS passada para IDirect3DDevice9::Reset deve ser tela cheia. Para voltar ao 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