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
我正在尝试运行方法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
您将看到更多函数示例,这些函数为其声明了便利包装器。