Я пытаюсь запустить метод 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()
);
Просто добавь &
, как это
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
вы увидите больше примеров функций, для которых объявлены удобные оболочки.