2013-11-17 5 views
0

Я пытаюсь запустить метод ID2D1RenderTarget :: DrawText, а моя текущая ошибка связана с типы аргументов, которые я передаю. (См код ниже)В чем разница между «[in] const D2D1_RECT_F * layoutRect» и «const D2D1_RECT_F & layoutRect» в DirectX Api

Я считаю, что вопрос заключается в том, что мой аргумент «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 где я обязан пройти «[в] сопзЬ 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

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

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