DirectX API中的" [in] const D2D1_RECT_F *layoutRect"和"const D2D1_RECT_F&layoutRect"有什么区别

What is the difference between " [in] const D2D1_RECT_F *layoutRect"' and 'const D2D1_RECT_F &layoutRect,' in DirectX Api

本文关键字:D2D1 layoutRect const RECT 什么 区别 API in DirectX 中的      更新时间:2023-10-16

我正在尝试运行方法ID2D1RenderTarget::D rawText方法,我当前的错误与我传递的参数类型有关。(见下面的代码)

我相信问题是我的"Rect1"参数符合这里给出的标准,http://msdn.microsoft.com/en-us/library/windows/desktop/dd371919%28v=vs.85%29.aspx 我通过了"const D2D1_RECT_F &layoutRect"

但是,仔细检查,我应该使用此API:http://msdn.microsoft.com/en-us/library/windows/desktop/dd371916%28v=vs.85%29.aspx 需要传递"[in] const D2D1_RECT_F *layoutRect"

所以我的问题是,两者之间有什么区别?如果你觉得特别慷慨,我该如何修复我的论点来传递上面的论点。

任何帮助非常感谢,干杯!

我的代码:

D2D1_RECT_F Rect1 = D2D1::RectF(60.0f, 90.0f, 80.0f, 60.0f);
devcon2d->DrawText (
    sc_score,
    ARRAYSIZE(sc_score)-1,
    dtextformat,
    Rect1,
    pBlackBrush.Get()
    );

只需添加&,就像这样

D2D1_RECT_F Rect1 = D2D1::RectF(60.0f, 90.0f, 80.0f, 60.0f);
devcon2d->DrawText (
    sc_score,
    ARRAYSIZE(sc_score)-1,
    dtextformat,
    &Rect1,
    pBlackBrush.Get()
    );

第一个是引用,第二个是指针。

由于您还询问了两者之间的区别,因此 [in] const D2D1_RECT_F * API 是 COM 接口实际公开的 ID2D1RenderTarget 。引用函数是为C++人的利益而添加的便利函数(最终进行指针调用)。

对于许多 DirectX 函数来说,这是一种相当常见的模式;如果您深入研究D2D1.h您将看到更多函数示例,这些函数为其声明了便利包装器。