Winapi DirectX视窗&;Windows Basic导致图形瑕疵

Winapi DirectX视窗&;Windows Basic导致图形瑕疵,winapi,directx,Winapi,Directx,我有一个可以创建一个或多个窗口的应用程序。这些窗口是Direct3D上下文,我在其中进行渲染 当Windows为桌面(Aero)启用硬件加速时,一切都会呈现良好。我可以随意移动窗户 如果我将Windows主题切换到Windows Basic,那将是一场灾难。窗口渲染正确,但如果我拖动窗口,它会在后面留下图像的痕迹。想想在纸牌游戏中获胜 你知道这是什么原因吗。否则没关系,但当它移动时,它似乎会把所有的东西都吸引过来 DirectX渲染器非常简单。清除、选择纹理、选择顶点缓冲区、选择索引缓冲区、绘制

我有一个可以创建一个或多个窗口的应用程序。这些窗口是Direct3D上下文,我在其中进行渲染

当Windows为桌面(Aero)启用硬件加速时,一切都会呈现良好。我可以随意移动窗户

如果我将Windows主题切换到Windows Basic,那将是一场灾难。窗口渲染正确,但如果我拖动窗口,它会在后面留下图像的痕迹。想想在纸牌游戏中获胜

你知道这是什么原因吗。否则没关系,但当它移动时,它似乎会把所有的东西都吸引过来

DirectX渲染器非常简单。清除、选择纹理、选择顶点缓冲区、选择索引缓冲区、绘制

更新

每个窗口的窗口层次结构如下所示:

父窗口,
WS\u EX\u分层
WS\u弹出窗口
。GDI+围绕窗口绘制一个框架。
子窗口、
WS_-EX_工具链
WS_-POPUP | WS_-CLIPSIBLINGS | WS_-CLIPCHILDREN
。DirectX将绘制到子对象中。

根据我的判断,如果您未处于合成模式,移动DirectX窗口将完成此操作。许多示例的主循环中都有渲染代码,这意味着PeakMessage会挂起渲染器


解决方案是,在调用任何MoveWindow之前,通过系统版本检查和DwmIsCompositionEnabled检测是否启用了合成。如果无法合成,请对渲染窗口进行快照,隐藏DirectX窗口并绘制快照。移动完成后,重新打开渲染。

D3D上下文是子窗口还是顶级窗口?