estrutura D3DPRESENT_PARAMETERS

Descreve os parâmetros de apresentação.

Sintaxe

typedef struct D3DPRESENT_PARAMETERS {
  UINT                BackBufferWidth;
  UINT                BackBufferHeight;
  D3DFORMAT           BackBufferFormat;
  UINT                BackBufferCount;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD               MultiSampleQuality;
  D3DSWAPEFFECT       SwapEffect;
  HWND                hDeviceWindow;
  BOOL                Windowed;
  BOOL                EnableAutoDepthStencil;
  D3DFORMAT           AutoDepthStencilFormat;
  DWORD               Flags;
  UINT                FullScreen_RefreshRateInHz;
  UINT                PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

Membros

BackBufferWidth

Tipo: UINT

Largura dos buffers traseiros da nova cadeia de troca, em pixels. Se Windowed for FALSE (a apresentação é de tela inteira), esse valor deverá ser igual à largura de um dos modos de exibição enumerados encontrados por meio de EnumAdapterModes. Se Windowed for TRUE e BackBufferWidth ou BackBufferHeight for zero, a dimensão correspondente da área de cliente do hDeviceWindow (ou a janela de foco, se hDeviceWindow for NULL) será tomada.

BackBufferHeight

Tipo: UINT

Altura dos buffers traseiros da nova cadeia de troca, em pixels. Se Windowed for FALSE (a apresentação é de tela inteira), esse valor deverá ser igual à altura de um dos modos de exibição enumerados encontrados por meio de EnumAdapterModes. Se Windowed for TRUE e BackBufferWidth ou BackBufferHeight for zero, a dimensão correspondente da área de cliente do hDeviceWindow (ou a janela de foco, se hDeviceWindow for NULL) será tomada.

BackBufferFormat

Tipo: D3DFORMAT

O formato do buffer de fundo. Para obter mais informações sobre formatos, consulte D3DFORMAT. Esse valor deve ser um dos formatos de destino de renderização, conforme validado por CheckDeviceType. Você pode usar GetDisplayMode para obter o formato atual.

Na verdade, D3DFMT_UNKNOWN pode ser especificado para o BackBufferFormat enquanto estiver no modo de janela. Isso informa ao runtime para usar o formato atual do modo de exibição e elimina a necessidade de chamar GetDisplayMode.

Para aplicativos em janelas, o formato de buffer de fundo não precisa mais corresponder ao formato de modo de exibição porque a conversão de cores agora pode ser feita pelo hardware (se o hardware der suporte à conversão de cores). O conjunto de possíveis formatos de buffer de fundo é restrito, mas o runtime permitirá que qualquer formato de buffer de fundo válido seja apresentado a qualquer formato de área de trabalho. (Há o requisito adicional de que o dispositivo seja operável na área de trabalho; os dispositivos normalmente não operam em modos de 8 bits por pixel.)

Aplicativos de tela inteira não podem fazer conversão de cores.

BackBufferCount

Tipo: UINT

Esse valor pode estar entre 0 e D3DPRESENT_BACK_BUFFERS_MAX (ou D3DPRESENT_BACK_BUFFERS_MAX_EX ao usar Direct3D 9Ex). Os valores de 0 são tratados como 1. Se o número de buffers de fundo não puder ser criado, o runtime falhará na chamada do método e preencherá esse valor com o número de buffers de fundo que podem ser criados. Como resultado, um aplicativo pode chamar o método duas vezes com a mesma estrutura D3DPRESENT_PARAMETERS e esperar que ele funcione pela segunda vez.

O método falhará se um buffer de fundo não puder ser criado. O valor de BackBufferCount influencia qual conjunto de efeitos de troca são permitidos. Especificamente, qualquer efeito de troca de D3DSWAPEFFECT_COPY requer que haja exatamente um buffer de fundo.

Multisampletype

Tipo: D3DMULTISAMPLE_TYPE

Membro do tipo enumerado D3DMULTISAMPLE_TYPE . O valor deve ser D3DMULTISAMPLE_NONE a menos que SwapEffect tenha sido definido como D3DSWAPEFFECT_DISCARD. Há suporte para multisampling somente se o efeito de troca for D3DSWAPEFFECT_DISCARD.

MultiSampleQuality

Tipo: DWORD

Nível de qualidade. O intervalo válido está entre zero e um a menos do que o nível retornado por pQualityLevels usado por CheckDeviceMultiSampleType. Passar um valor maior retorna o erro D3DERR_INVALIDCALL. Valores emparelhados de destinos de renderização ou de superfícies de estêncil de profundidade e D3DMULTISAMPLE_TYPE devem corresponder.

Swapeffect

Tipo: D3DSWAPEFFECT

Membro do tipo enumerado D3DSWAPEFFECT . O runtime garantirá a semântica implícita relativa ao comportamento de troca de buffer; Portanto, se Windowed for TRUE e SwapEffect estiver definido como D3DSWAPEFFECT_FLIP, o runtime criará um buffer de back extra e copiará o que se tornar o buffer frontal no momento da apresentação.

D3DSWAPEFFECT_COPY requer que BackBufferCount seja definido como 1.

D3DSWAPEFFECT_DISCARD será imposta no runtime de depuração preenchendo qualquer buffer com ruído depois que ele for apresentado.

Diferenças entre Direct3D9 e Direct3D9Ex:

  • No Direct3D9Ex, D3DSWAPEFFECT_FLIPEX é adicionado para designar quando um aplicativo está adotando o modo de inversão. Ou seja, o quadro de um aplicativo é passado no modo da janela (em vez de copiado) para o DWM (Gerenciador de Janelas da Área de Trabalho) para composição. O modo Flip fornece largura de banda de memória mais eficiente e permite que um aplicativo aproveite as estatísticas presentes em tela inteira. Ele não altera o comportamento em tela inteira. O comportamento do modo Flip está disponível a partir do Windows 7.

 

hDeviceWindow

Tipo: HWND

A janela do dispositivo determina o local e o tamanho do buffer traseiro na tela. Isso é usado pelo Direct3D quando o conteúdo do buffer traseiro é copiado para o buffer frontal durante o Presente.

  • Para um aplicativo de tela inteira, esse é um identificador para a janela superior (que é a janela de foco).

    Para aplicativos que usam vários dispositivos de tela inteira (como um sistema multimonitoramento), exatamente um dispositivo pode usar a janela de foco como a janela do dispositivo. Todos os outros dispositivos devem ter janelas de dispositivo exclusivas.

  • Para um aplicativo de modo de janela, esse identificador será a janela de destino padrão para Presente. Se esse identificador for NULL, a janela de foco será tomada.

Observe que nenhuma tentativa é feita pelo runtime para refletir as alterações do usuário no tamanho da janela. O buffer de fundo não é redefinido implicitamente quando essa janela é redefinida. No entanto, o método Present controla automaticamente as alterações de posição da janela.

Janela

Tipo: BOOL

TRUE se o aplicativo for executado em janelas; FALSE se o aplicativo for executado em tela inteira.

EnableAutoDepthStencil

Tipo: BOOL

Se esse valor for TRUE, o Direct3D gerenciará buffers de profundidade para o aplicativo. O dispositivo criará um buffer de estêncil de profundidade quando ele for criado. O buffer de estêncil de profundidade será definido automaticamente como o destino de renderização do dispositivo. Quando o dispositivo for redefinido, o buffer de estêncil de profundidade será destruído e recriado automaticamente no novo tamanho.

Se EnableAutoDepthStencil for TRUE, AutoDepthStencilFormat deverá ser um formato válido de estêncil de profundidade.

AutoDepthStencilFormat

Tipo: D3DFORMAT

Membro do tipo enumerado D3DFORMAT . O formato da superfície de estêncil de profundidade automática que o dispositivo criará. Esse membro será ignorado, a menos que EnableAutoDepthStencil seja TRUE.

Sinalizadores

Tipo: DWORD

Uma das constantes D3DPRESENTFLAG .

FullScreen_RefreshRateInHz

Tipo: UINT

A taxa na qual o adaptador de vídeo atualiza a tela. O valor depende do modo no qual o aplicativo está em execução:

  • Para o modo com janelas, a taxa de atualização deve ser 0.
  • Para o modo de tela inteira, a taxa de atualização é uma das taxas de atualização retornadas por EnumAdapterModes.

PresentationInterval

Tipo: UINT

A taxa máxima na qual os buffers traseiros da cadeia de troca podem ser apresentados ao buffer frontal. Para obter uma explicação detalhada dos modos e dos intervalos com suporte, consulte D3DPRESENT.

Requisitos

Requisito Valor
parâmetro
D3D9Types.h

Confira também

Estruturas Direct3D

Createdevice

CreateAdditionalSwapChain

Presente

Redefinir