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 |