Compartilhar via


Flipping Surfaces

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Qualquer superfície em DirectDraw pode ser construído como uma invertendo superfície. Uma superfície flipping é qualquer informação de memória que pode ser trocada entre uma reserva frontal e um buffer de fundo. (Esta construção é comumente conhecida para como um encadear flipping). Geralmente, a reserva frontal é o primário superfície, mas ele não precisa ser.

Normalmente, quando você usa o IDirectDrawSurface::Flip método para solicitação virar uma superfície operação, os ponteiros para memória de superfície para o primário superfície e voltar buffers são trocados. Invertendo é executada por Alternar os ponteiros que o dispositivo exibir usa para referenciar memória, não copiando memória superfície.

Quando uma inversão encadear contém um primário superfície e um more than buffer de fundo, os ponteiros são trocados em um padrão circular, como mostra a seguinte ilustração.

Outras superfícies que são anexado a um objeto do DirectDraw, mas não faz parte do encadear flipping, é afetados quando o Inverter método for chamado.

Lembre-se de que o DirectDraw inverte superfícies por permutação ponteiros de superfície memória dentro objetos DirectDrawSurface, não pelo Permutação de objetos próprios.

Isso significa que, para blit de cores para o buffer de fundo em qualquer tipo de esquema flipping, você sempre usar o mesmo DirectDrawSurface objeto aquele que estava a buffer de fundo quando você criou o encadear flipping.

Por outro lado, você sempre executar um virar operação por chamado da superfície frontal Inverter método.

Quando estiver trabalhando com superfícies visíveis, such as um primário superfície invertendo encadear ou uma superfície visível sobreposição invertendo encadear, o Inverter método é assíncrono, a menos que você incluir o sinalizador DDFLIP_WAITNOTBUSY.

Nesses superfícies visíveis, o Inverter método pode retornar antes o real virar operação ocorre no hardware (como o hardware não virar até o próximo atualizar vertical ocorre).

Enquanto o real virar operação está pendente, o buffer de fundo por trás de superfície visível no momento não pode ser bloqueada ou blitted por chamado de IDirectDrawSurface::LOCK, IDirectDrawSurface::Blt, ou IDirectDrawSurface::GetDC Métodos.

Se você tentar chamar esses métodos enquanto um virar operação está pendente, eles irão falhar e exibir DirectDraw Return Values. No entanto, se você estiver usando um armazenada em buffer triplo esquema, a reserva rearmost ainda está disponível.

Em ordem para girar a Tela enquanto estiver usando primário página superfície invertendo, seu aplicativo precisa chamar FlipToGDISurface prior to chamado ChangeDisplaySettingsEx Para girar a Tela. Caso contrário, a ordem flipping pode ser alterado pela chamar para restauração no primário superfície invertendo encadear, depois que Tela tenha sido girada.