Compartilhar via


Método IDirectDrawSurface7::Flip (ddraw.h)

Faz com que a memória da superfície associada ao DDSCAPS_BACKBUFFER superfície se torne associada à superfície do buffer frontal.

Sintaxe

HRESULT Flip(
  [in] LPDIRECTDRAWSURFACE7 unnamedParam1,
  [in] DWORD                unnamedParam2
);

Parâmetros

[in] unnamedParam1

Um ponteiro para a interface IDirectDrawSurface7 para uma superfície arbitrária na cadeia de inversão. O padrão para esse parâmetro é NULL; nesse caso, o DirectDraw percorre os buffers na ordem em que eles são anexados uns aos outros. Se esse parâmetro não for NULL, o DirectDraw será invertido para a superfície especificada, em vez da próxima superfície na cadeia de inversão. A inversão falhará se a superfície especificada não for membro da cadeia de inversão.

[in] unnamedParam2

Uma combinação de sinalizadores que especificam opções de inversão. Os seguintes sinalizadores são definidos:

DDFLIP_DONOTWAIT

Nas interfaces IDirectDrawSurface7 , o padrão é DDFLIP_WAIT. Se você quiser substituir o padrão e usar o tempo quando o acelerador estiver ocupado (conforme indicado pelo valor retornado DDERR_WASSTILLDRAWING), use DDFLIP_DONOTWAIT.

DDFLIP_EVEN

Para uso somente ao exibir vídeo em uma superfície de sobreposição. A nova superfície contém dados do campo par de um sinal de vídeo. Esse sinalizador não pode ser usado com o sinalizador DDFLIP_ODD.

DDFLIP_STEREO

O DirectDraw inverte e exibe uma superfície estéreo main. Quando esse sinalizador é definido, o autoflipping estéreo é habilitado. O hardware inverte automaticamente entre os buffers esquerdo e direito durante cada atualização de tela.

DDFLIP_INTERVAL2

DDFLIP_INTERVAL3

DDFLIP_INTERVAL4

Os sinalizadores DDFLIP_INTERVAL2, DDFLIP_INTERVAL3 e DDFLIP_INTERVAL4 indicam quantas retrações verticais esperar entre cada inversão. O padrão é 1. DirectDraw retorna DERR_WASSTILLDRAWING para cada superfície envolvida na inversão até que o número especificado de retrações verticais tenha ocorrido. Se DDFLIP_INTERVAL2 estiver definido, o DirectDraw será invertido a cada segundo de sincronização vertical; se DDFLIP_INTERVAL3, em cada terceira sincronização; e se DDFLIP_INTERVAL4, em cada quarta sincronização.

Esses sinalizadores só serão eficazes se DDCAPS2_FLIPINTERVAL bit estiver definido no membro dwCaps2 da estrutura DDCAPS retornada para o hardware de exibição.

DDFLIP_NOVSYNC

Faz com que o DirectDraw execute a inversão física o mais próximo possível da próxima linha de verificação. As operações subsequentes que envolvem as duas superfícies invertidas não marcar se a inversão física foi concluída, ou seja, elas não retornam DDERR_WASSTILLDRAWING por esse motivo (mas podem por outros motivos). Isso permite que um aplicativo execute inversãos em uma frequência mais alta do que a taxa de atualização do monitor, mas pode introduzir artefatos visíveis.

Se DDCAPS2_FLIPNOVSYNC não estiver definido no membro dwCaps2 da estrutura DDCAPS retornada para o hardware de exibição, DDFLIP_NOVSYNC não terá efeito.

DDFLIP_ODD

Para uso somente ao exibir vídeo em uma superfície de sobreposição. A nova superfície contém dados do campo ímpar de um sinal de vídeo. Esse sinalizador não pode ser usado com o sinalizador DDFLIP_EVEN.

DDFLIP_WAIT

Normalmente, se a inversão não puder ser configurada porque o estado do hardware de exibição não é apropriado, o erro DDERR_WASSTILLDRAWING retornará imediatamente e nenhuma inversão ocorrerá. Definir esse sinalizador faz com que o Flip continue tentando inverter se receber o erro DDERR_WASSTILLDRAWING da camada de abstração de hardware (HAL). O Flip não retorna até que a operação de inversão tenha sido configurada com êxito ou que outro erro, como DDERR_SURFACEBUSY, seja retornado.

Retornar valor

Se o método for bem-sucedido, o valor retornado será DD_OK.

Se falhar, o método poderá retornar um dos seguintes valores de erro:

  • DDERR_GENERIC
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NOFLIPHW
  • DDERR_NOTFLIPPABLE
  • DDERR_SURFACEBUSY
  • DDERR_SURFACELOST
  • DDERR_UNSUPPORTED
  • DDERR_WASSTILLDRAWING

Comentários

Com IDirectDrawSurface7, o comportamento padrão do Flip é aguardar a conclusão do acelerador. Portanto, em condições padrão, o Flip nunca retorna DDERR_WASSTILLDRAWING. Se você quiser ver os códigos de erro e não esperar até que a operação de inversão seja bem-sucedida, use o sinalizador DDFLIP_DONOTWAIT.

O Flip só pode ser chamado para uma superfície que tenha os recursos DDSCAPS_FLIP e DDSCAPS_FRONTBUFFER. A memória de exibição associada anteriormente ao buffer frontal está associada ao buffer de fundo.

O parâmetro lpDDSurfaceTargetOverride é usado em casos raros em que o buffer traseiro não é o buffer que deve se tornar o buffer frontal. Normalmente, esse parâmetro é NULL.

O Flip é sempre sincronizado com o espaço em branco vertical. Se a superfície tiver sido atribuída a uma porta de vídeo, esse método atualizará a superfície de sobreposição visível e a superfície de destino da porta de vídeo.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho ddraw.h
Biblioteca Ddraw.lib
DLL Ddraw.dll

Confira também

IDirectDrawSurface7