C++ 我应该何时调整Direct3D 11 backbuffer的大小,以防止在调整大小时拉伸它?

C++ 我应该何时调整Direct3D 11 backbuffer的大小,以防止在调整大小时拉伸它?,c++,winapi,resize,direct3d,direct3d11,C++,Winapi,Resize,Direct3d,Direct3d11,我创建了一个Direct3D 11应用程序,可以调整窗口的大小。我正在绘制2D内容,我希望无论我对窗口做了什么,它都保持相同的大小,因此,例如,从右下角收缩窗口时,应该隐藏右侧或底部的任何内容,但将左上角的任何内容保持静止 但是,尽管我正在调整后缓冲区的大小,以响应的文档中所述的WM_SIZE,但在调整大小之前,我仍然会看到窗口内容拉伸或挤压了一会儿。当我将窗口拖动到新的大小时,这使得窗口内容的大小似乎上下波动。结果是,在创建交换链时,我将我的DXGI\u交换链\u描述1的缩放字段零初始化,结果

我创建了一个Direct3D 11应用程序,可以调整窗口的大小。我正在绘制2D内容,我希望无论我对窗口做了什么,它都保持相同的大小,因此,例如,从右下角收缩窗口时,应该隐藏右侧或底部的任何内容,但将左上角的任何内容保持静止


但是,尽管我正在调整后缓冲区的大小,以响应的文档中所述的
WM_SIZE
,但在调整大小之前,我仍然会看到窗口内容拉伸或挤压了一会儿。当我将窗口拖动到新的大小时,这使得窗口内容的大小似乎上下波动。

结果是,在创建交换链时,我将我的
DXGI\u交换链\u描述1
缩放
字段零初始化,结果是
DXGI\u缩放
。切换到
DXGI\u SCALING\u NONE
修复了该问题(并减少了调整后缓冲区大小所需的频率)。

您还应该考虑使用
ENTERSIZEMOVE
/
WM\u EXITSIZEMOVE
来避免“resizebuffers每秒调用六次”问题。参见示例用法。