В чем разница между & quot; [in] const D2D1_RECT_F * layoutRect & quot; ‘ и ‘const D2D1_RECT_F & amp; layoutRect’ в DirectX Api

Я пытаюсь запустить метод ID2D1RenderTarget :: DrawText, и моя текущая ошибка связана с типами аргументов, которые я передаю. (См. Код ниже)

Я считаю, что проблема в том, что мой аргумент ‘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()
);

0

Решение

Просто добавь &, как это

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()
);

Первый — это ссылка, второй — указатель.

0

Другие решения

Поскольку вы также спросили о разнице между ними, [in] const D2D1_RECT_F * API — это тот, который на самом деле предоставляется интерфейсом COM ID2D1RenderTarget, Эталонные функции — это вспомогательные функции, добавленные в пользу народа C ++ (который в итоге вызывает вызов указателя).

Это довольно распространенный шаблон для многих функций DirectX; если копаться D2D1.h вы увидите больше примеров функций, для которых объявлены удобные оболочки.

0

По вопросам рекламы [email protected]