我创建了一个允许调整窗口大小的 Direct3D 11 应用程序。我正在绘制 2D 内容,并且无论我对窗口做什么,我都希望它保持相同的大小,所以例如从右下角缩小窗口应该隐藏右侧或底部的所有内容,但将左上角的所有内容保留为静止状态。
但是,尽管我正在调整后台缓冲区的大小以响应 WM_SIZE
,如 IDXGISwapChain::ResizeBuffers
的文档中所述。 ,我仍然看到窗口内容在调整大小时会拉伸(stretch)或挤压一段时间,然后才会自行纠正。当我将窗口拖动到新大小时,这使得窗口内容的大小看起来会上下波动。
最佳答案
事实证明,在创建交换链时,我留下了我的 DXGI_SWAP_CHAIN_DESC1
的Scaling
字段零初始化,结果是 DXGI_SCALING_STRETCH
。切换至DXGI_SCALING_NONE
解决了问题(并减少了调整后台缓冲区大小的频率)。
关于c++ - 我什么时候应该调整 Direct3D 11 后缓冲区的大小以防止其在调整大小期间被拉伸(stretch)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37339050/