В чем разница между [in] const D2D1_RECT_F *layoutRect и «const D2D1_RECT_F &layoutRect» в DirectX Api

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

Я считаю, что проблема в том, что мой аргумент «Rect1» соответствует критериям, приведенным здесь http://msdn.microsoft.com/en-us/library/windows/desktop/dd371919%28v=vs.85%29.aspx, где я прошел < strong>"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()
    );

person nat1707828    schedule 17.11.2013    source источник


Ответы (2)


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

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

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

person john    schedule 17.11.2013

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

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

person susmits    schedule 19.11.2013