【问题标题】:Direct2d command analog to OpenGL's SwapBuffers?Direct2d 命令类似于 OpenGL 的 SwapBuffers?
【发布时间】:2011-06-28 15:08:20
【问题描述】:

什么是类似于 OpenGL 的 SwapBuffers 的 Direct2d 命令?我在 Delphi 和 CPP Builder 等 VCL 环境中使用它。谢谢

【问题讨论】:

    标签: delphi delphi-2010 c++builder direct2d c++builder-2010


    【解决方案1】:
    d3ddev->Present(NULL, NULL, NULL, NULL);
    

    【讨论】:

    • Direct2d 没有?哦,好吧,我会坚持使用 OpenGL。
    【解决方案2】:

    您可以通过多种方式在 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 呈现。这更复杂,但为您提供了更大的灵活性。

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2016-01-02
      • 2015-05-15
      • 2012-04-27
      • 2020-05-04
      • 1970-01-01
      • 2016-12-28
      • 2012-08-02
      • 2012-11-02
      相关资源
      最近更新 更多