【发布时间】:2011-06-28 15:08:20
【问题描述】:
什么是类似于 OpenGL 的 SwapBuffers 的 Direct2d 命令?我在 Delphi 和 CPP Builder 等 VCL 环境中使用它。谢谢
【问题讨论】:
标签: delphi delphi-2010 c++builder direct2d c++builder-2010
什么是类似于 OpenGL 的 SwapBuffers 的 Direct2d 命令?我在 Delphi 和 CPP Builder 等 VCL 环境中使用它。谢谢
【问题讨论】:
标签: delphi delphi-2010 c++builder direct2d c++builder-2010
d3ddev->Present(NULL, NULL, NULL, NULL);
【讨论】:
您可以通过多种方式在 Direct2D 中进行等效操作。最简单的方法是创建一个 ID2D1HwndRenderTarget。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/dd371275(v=vs.85).aspx。您将对 D2D1_HWND_RENDER_TARGET_PROPERTIES 参数感兴趣。这有一个 D2D1_PRESENT_OPTIONS 字段,可以根据您想要的行为将其设置为不同的值。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/dd368144(v=vs.85).aspx。有了这个,SwapBuffers 的大致等价物是 ID2D1RenderTarget::EndDraw。
另一个选项是使用 Direct3D 互操作。在这种情况下,您将创建一个 DXGI 表面渲染目标。 (我会发布一个文档链接,但我没有足够的 StackOverflow 声誉来发布两个以上的超链接。Google "ID2D1Factory::CreateDxgiSurfaceRenderTarget" 用于文档)。这允许您使用 Direct2D 向表面发出 2D 渲染命令,然后使用 Direct3D/DXGI 呈现。这更复杂,但为您提供了更大的灵活性。
【讨论】: