Introdução à apresentação de uma cena (Direct3D 9)
As APIs de apresentação são um conjunto de métodos que controlam o estado do dispositivo que afeta o que o usuário vê no monitor. Esses métodos incluem a configuração de modos de exibição e métodos uma vez por quadro que são usados para apresentar imagens ao usuário.
- IDirect3DDevice9::Present
- IDirect3DDevice9::Reset
- IDirect3DDevice9::GetGammaRamp
- IDirect3DDevice9::SetGammaRamp
- IDirect3DDevice9::GetRasterStatus
Familiaridade com os termos a seguir é necessário para entender as APIs de apresentação.
- buffer frontal. Um retângulo de memória traduzido pelo adaptador gráfico e exibido no monitor ou em outro dispositivo de saída.
- buffer de fundo. Uma superfície cujo conteúdo pode ser promovido para o buffer frontal.
- cadeia de troca. Uma coleção de buffers traseiros que podem ser apresentados serialmente ao buffer frontal. Normalmente, uma cadeia de troca de tela inteira apresenta imagens subsequentes com a DDI (interface de driver de dispositivo) invertida e uma cadeia de troca em janelas apresenta imagens com a DDI de blitting.
Como o Direct3D 9 tem uma cadeia de troca como propriedade do dispositivo, há sempre pelo menos uma cadeia de troca por dispositivo. A interface IDirect3DDevice9 tem um conjunto de métodos que manipulam a cadeia de troca implícita e são uma cópia da própria interface da cadeia de troca. Os aplicativos podem criar cadeias de troca adicionais; no entanto, isso não é necessário para o aplicativo típico de janela única ou de tela inteira.
O buffer frontal não é exposto diretamente no Direct3D 9. Como resultado, os aplicativos não podem bloquear ou renderizar no buffer frontal. Para obter detalhes, consulte Acessando o buffer frontal de cores (Direct3D 9).
Observação
O DirectX 7 forneceu várias APIs de apresentação que foram chamadas juntas. Um bom exemplo disso é a sequência IDirectDraw7::SetCooperativeLevel, IDirectDraw7::SetDisplayMode e IDirectDraw7::CreateSurface. Além disso, os métodos IDirectDrawSurface7::Flip e IDirectDrawSurface7::Blt sinalizaram o transporte de quadros renderizados para o monitor. O Direct3D 9 recolhe esses grupos de APIs em dois métodos main, Redefinir e Apresentar. Redefinir subsumes SetCooperativeLevel, SetDisplayMode, CreateSurface e alguns dos parâmetros a serem invertidos. Apresentar subsumes inverte e a apresentação usa blit.
Uma chamada para IDirect3D9::CreateDevice representa uma redefinição implícita do dispositivo. A API do Direct3D 9 não tem noção de uma superfície primária; não é possível criar um objeto que represente a superfície primária. Ele é considerado uma propriedade interna do dispositivo.
As rampas gama são associadas a uma cadeia de troca e são manipuladas com os métodos IDirect3DDevice9::GetGammaRamp e IDirect3DDevice9::SetGammaRamp .
Tópicos relacionados