Обновление шрифта Directx9 с преобразованием int в LPCTSTR

Я пытаюсь показать счет на экране. Следующий код работает нормально:

g_Font = NULL;
D3DXFONT_DESC f = {fontSize,
0,
400,
0,
false,
DEFAULT_CHARSET,
OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_PITCH,
fontName};
fontDesc = f;
fontPosition.top = top;
fontPosition.left = left;
fontPosition.right = right;
fontPosition.bottom = bottom;
text = t;
D3DXCreateFontIndirect(device,&fontDesc,&g_Font);

Следующая часть отображается для каждого кадра:

g_Font->DrawText(NULL,
text,
-1,
&fontPosition,
DT_CENTER,
0xffffffff); //draw text

Я хочу обновить текст во время выполнения. Я просто обновляю текстовую переменную, поскольку код рисования выполняется для каждого кадра, но он не работает. Простой текст работает, но следующая конструкция не работает:

const size_t buflen = 100;
TCHAR buf[buflen];
_sntprintf(buf, buflen - 1, TEXT("Point: %d"), point);
text = (LPCTSTR)buf;

Я испробовал почти все решения, которые мог найти в Интернете, но они не работают. Я вижу, что целое число успешно преобразовано, но в следующем рендеринге есть абсурдные символы. Какие-либо решения?

0

Решение

Размещенный вами код неполон, но я все же постараюсь дать вам ответ, который должен помочь вам решить проблему.

Во-первых, я думаю, что вы смешиваете понятия и работаете DrawText как если бы это был элемент пользовательского интерфейса WinForms или что-то. Каждый раз, когда вы хотите обновить текст, DrawText должен быть вызван. Он не хранит указатель на буфер, который вы передаете, и автоматически обновляет текст при изменении этого буфера, см. Документацию Вот. Если вы хотите добавить «упаковщик меток», вам нужно будет вызвать его DrawTextскорее всего в Render метод, между вызовами BeginScene а также EndScene,

Что касается абсурдных символов, если ваша строка преобразована правильно, вы уверены, что вы Clear ваш RenderTarget прежде чем снова рисовать на нем?

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector