Compartilhar via


Direct3D Mobile Application Operation

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Depois que seu aplicativo foi criado e inicializado o apropriado Recursos você pode têm ele inserem seu executar um loop processamento para animar cena do seu aplicativo. Esta executar um loop também é às vezes chamado de executar um loop principal. Você pode unidade processamento executar um loop do seu aplicativo por levando entrada do usuário, observando um externo relógio, ouvindo para mensagens janelas ou permitindo simplesmente desenhar seu aplicativo suas cenas mais rápido possível.

A seguinte lista mostra a seqüência típica de operações para processamento executar um loop de um aplicativo.

  1. Alterar o apropriado processar estados, consulte IDirect3DMobileDevice::SetRenderState.
  2. Clear o destino processar, a reserva profundidade e a reserva estêncil para um valor inicial conhecida, consulte IDirect3DMobileDevice::Clear.
  3. Começar a cena, consulte IDirect3DMobileDevice::BeginScene.
  4. Desenhar os primitivos, consulte IDirect3DMobileDevice::DrawPrimitive e IDirect3DMobileDevice::DrawIndexedPrimitive.
  5. Finalizar a cena, consulte IDirect3DMobileDevice::EndScene método.
  6. Apresentar o Consulte cena IDirect3DMobileDevice::Present.

Essa seqüência típica das operações não é a seqüência só é possível. O seguinte seções fornecem maiores detalhes sobre as operações listadas na seqüência típica. Você pode desenhar neste informações para ajudá implementar qualquer um de um número de variações dessa seqüência típica para melhor servir a metas de design de você aplicativo.

Limpando a cadeia de troca Mobile Direct3D

Limpando é o processo de configuração valores pixels de superfícies na encadear trocar para um valor conhecido. Você pode Clear uma superfície inteira ou apenas uma matriz de sub-rotina retângulos. Você pode Clear qualquer combinação da processar destino cor reserva, reserva estêncil ou reserva profundidade.

Você pode Clear o atual encadear trocar por chamado de IDirect3DMobileDevice::Clear método. Esse método permite que você identifique os buffers você desejar para Clear, qualquer retângulos Sub e os valores que você desejar para Clear buffers de cor, intensidade e estêncil para.

Você Clear a reserva cor com um valor ARGB 32 bit de tipo D3DMCOLOR. Você Clear a reserva profundidade com um valor de ponto flutuante 32 bit IEEE onde 0.0 representa a distância mais próxima e o visualizador e 1.0 representa a extremidade. Valores outside of o intervalo causar 0.0 to 1.0 o IDirect3DMobileDevice::Clear método falha na depuração Middleware D3DM cria. O comportamento em compilações versão é indefinido. Você Clear a reserva estêncil com uma sem assinatura valor inteiro entre 0 e 2 ^ n - 1, onde n é o número de bits em canalizar o estêncil.

Você pode comando o IDirect3DMobileDevice::Clear método para Clear a área inteira do vários superfícies. Ele também levar um opcional matriz de RECT estruturas que descrevem sub-Rectangles da superfície para Clear. O tamanho da reserva a comando Microsoft® Direct3D Mobile® limita o número de retângulos que podem ser limpo por um único chamar para esse método 1024.

Desenho Primitives

O IDirect3DMobileDevice::DrawPrimitive e IDirect3DMobileDevice::DrawIndexedPrimitive métodos são usados para sinalizar a Middleware que os primitivos em uma cena estão prontos para ser desenhado.

Usando o IDirect3DMobileDevice::DrawPrimitive método requer que você especificar o tipo primitivo, o número de vértices de deslocamento na reserva de vértice e o número de primitivos para desenhar. Os Middleware automaticamente leituras sucessivas Grupos de vértices apropriado para o tipo primitivo de reserva a vértice.

Usando o IDirect3DMobileDevice::DrawIndexedPrimitive método é um pouco mais complicado. Você deve também especificar o tipo primitivo, no entanto, em vez de ler vértices em seqüência de reserva de vértice, este método lê índices em seqüência de reserva de índice. O índice é o deslocamento, contados em vértices, do vértice. Usar uma reserva índice permite vértices a ser compartilhada entre primitivos sem replicar os dados vértice na reserva de vértice.

Como parte de design de Direct3D Mobile, ambos os métodos de desenho, na verdade, resultam em Direct3D Mobile causar a Middleware gravar símbolos de comando para a reserva de comando. A Middleware não envia esses comandos para o driver até você liberado a reserva de comando.

Início e Término um Scene

Direct3D Mobile usa a concepção de uma cena. Uma cena é um bloco de desenho comandos feitos entre um chamar para o IDirect3DMobileDevice::BeginScene método e um chamar para o IDirect3DMobileDevice::EndScene método. Marcar explicitamente ao desenho comandos irá ocorrer por contendo-los em uma cena permite otimizar o driver sua instalação e estado interno. Um efeito colateral dessa otimização é que a alteração estados driver dentro uma cena pode resultar em um penalidade de desempenho maior do que alterá-los outside of a cena.

See Also

Concepts

Direct3D Mobile Programming