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 |
|
Confira também