IDXGISwapChain交换链
2024-05-25
29
0
IDXGISwapChain的方法主要与屏显相关。
IDXGISwapChain::GetDesc
获取交换链的属性信息
typedef struct DXGI_SWAP_CHAIN_DESC {
DXGI_MODE_DESC BufferDesc;
DXGI_SAMPLE_DESC SampleDesc;
DXGI_USAGE BufferUsage;
UINT BufferCount;
HWND OutputWindow;
BOOL Windowed;
DXGI_SWAP_EFFECT SwapEffect;
UINT Flags;
} DXGI_SWAP_CHAIN_DESC;
IDXGISwapChain::GetBuffer
访问交换链的后台缓冲区指针,用于获取或修改渲染数据
IDXGISwapChain::ResizeBuffers
更改交换链的后台缓冲区大小、格式和缓冲区数。 在调整应用程序窗口大小时应调用此名称。
HRESULT ResizeBuffers(
UINT BufferCount,
UINT Width,
UINT Height,
DXGI_FORMAT NewFormat,
UINT SwapChainFlags
);
IDXGISwapChain::GetContainingOutput
获取输出 (包含目标窗口的大部分工作区的显示监视器) 。
IDXGIOutput 接口表示适配器输出 (,例如监视器)
IDXGISwapChain::ResizeTarget
调整输出目标的大小
typedef struct DXGI_MODE_DESC {
UINT Width;
UINT Height;
DXGI_RATIONAL RefreshRate;
DXGI_FORMAT Format;
DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
DXGI_MODE_SCALING Scaling;
} DXGI_MODE_DESC;
IDXGISwapChain::GetFrameStatistics
获取最后一帧渲染的性能统计信息
typedef struct DXGI_FRAME_STATISTICS {
UINT PresentCount;
UINT PresentRefreshCount;
UINT SyncRefreshCount;
LARGE_INTEGER SyncQPCTime;
LARGE_INTEGER SyncGPUTime;
} DXGI_FRAME_STATISTICS;
IDXGISwapChain::SetFullscreenState
将显示状态设置为窗口或全屏。信息同GetFullscreenState
IDXGISwapChain::GetFullscreenState
是否全屏状态和全屏状态下的目标输出指针
HRESULT GetFullscreenState(
[out, optional] BOOL *pFullscreen, //是否全屏
[out, optional] IDXGIOutput **ppTarget //全屏时为输出目标的指针,否则为NULL
);