Método IDXGISwapChain::ResizeBuffers (dxgi.h)
Cambia el tamaño, el formato y el número de búferes de reserva de la cadena de intercambio. Se debe llamar a cuando se cambia el tamaño de la ventana de la aplicación.
Sintaxis
HRESULT ResizeBuffers(
UINT BufferCount,
UINT Width,
UINT Height,
DXGI_FORMAT NewFormat,
UINT SwapChainFlags
);
Parámetros
BufferCount
Tipo: UINT
Número de búferes de la cadena de intercambio (incluidos todos los búferes delanteros y atrás). Este número puede ser diferente del número de búferes con los que creó la cadena de intercambio. Este número no puede ser mayor que DXGI_MAX_SWAP_CHAIN_BUFFERS. Establezca este número en cero para conservar el número existente de búferes en la cadena de intercambio. No se pueden especificar menos de dos búferes para el modelo de presentación invertida.
Width
Tipo: UINT
Nuevo ancho del búfer de reserva. Si especifica cero, DXGI usará el ancho del área de cliente de la ventana de destino. No puede especificar el ancho como cero si llamó al método IDXGIFactory2::CreateSwapChainForComposition para crear la cadena de intercambio para una superficie de composición.
Height
Tipo: UINT
Nuevo alto del búfer de reserva. Si especifica cero, DXGI usará el alto del área de cliente de la ventana de destino. No puede especificar el alto como cero si llamó al método IDXGIFactory2::CreateSwapChainForComposition para crear la cadena de intercambio para una superficie de composición.
NewFormat
Tipo: DXGI_FORMAT
Valor DXGI_FORMAT con tipo para el nuevo formato del búfer de reserva. Establezca este valor en DXGI_FORMAT_UNKNOWN para conservar el formato existente del búfer de reserva. El modelo de presentación invertida admite un conjunto de formatos más restringido que el modelo de transferencia de bloques de bits (bitblt).
SwapChainFlags
Tipo: UINT
Combinación de valores con tipo DXGI_SWAP_CHAIN_FLAG que se combinan mediante una operación OR bit a bit. El valor resultante especifica opciones para el comportamiento de la cadena de intercambio.
Valor devuelto
Tipo: HRESULT
Devuelve S_OK si se ejecuta correctamente; de lo contrario, un código de error. Para obtener una lista de códigos de error, consulte DXGI_ERROR.
Comentarios
No puede cambiar el tamaño de una cadena de intercambio a menos que libere todas las referencias pendientes a sus búferes de reserva. Debe liberar todas sus referencias directas e indirectas en los búferes posteriores para que ResizeBuffers se realice correctamente.
La aplicación mantiene las referencias directas después de llamar a AddRef en un recurso.
Las referencias indirectas se mantienen mediante vistas a un recurso, enlazando una vista del recurso a un contexto de dispositivo, una lista de comandos que usó el recurso, una lista de comandos que usó una vista para ese recurso, una lista de comandos que ejecutó otra lista de comandos que usó el recurso, etc.
Antes de llamar a ResizeBuffers, asegúrese de que la aplicación libera todas las referencias (llamando al número adecuado de invocaciones de versión ) en los recursos, las vistas al recurso y las listas de comandos que usan los recursos o vistas, y asegúrese de que ni el recurso ni una vista todavía están enlazados a un contexto de dispositivo. Puede usar ID3D11DeviceContext::ClearState para asegurarse de que se publiquen todas las referencias. Si una vista está enlazada a un contexto diferido, también debe descartar la lista de comandos parcialmente compilada (llamando a ID3D11DeviceContext::ClearState y, a continuación, ID3D11DeviceContext::FinishCommandList y release en la lista de comandos). Después de llamar a ResizeBuffers, puede volver a consultar las interfaces a través de IDXGISwapChain::GetBuffer.
Para las cadenas de intercambio que creó con DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE, antes de llamar a ResizeBuffers, llame también a IDXGISurface1::ReleaseDC en la superficie de back-buffer de la cadena de intercambio para asegurarse de que no tiene abiertos contextos de dispositivo GDI pendientes (CONTROLADORES).
Se recomienda llamar a ResizeBuffers cuando se cambia el tamaño de una ventana de cliente (es decir, cuando una aplicación recibe un mensaje de WM_SIZE).
La única diferencia entre IDXGISwapChain::ResizeBuffers en Windows 8 frente a Windows 7 es con cadenas de intercambio de modelos de presentación invertida que se crean con el conjunto de valores DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL o DXGI_SWAP_EFFECT_FLIP_DISCARD. En Windows 8, debes llamar a ResizeBuffers para realizar una transición entre el modo de pantalla completa y el modo de ventana; De lo contrario, se produce un error en la siguiente llamada al método IDXGISwapChain::P resent .
Requisitos
Plataforma de destino | Windows |
Encabezado | dxgi.h |
Library | DXGI.lib |