2012-06-11 3 views
2

Я хочу отображать имена персонажей над головами в моей игре первого лица (используя DirectX 9 с C++). Я рисую текст в нужном месте, используя D3DXVec3Project, чтобы получить координаты экрана, но просто отображение текста там с помощью D3DXFONT не очень читаемо. Он должен иметь фоновый спрайт (или какой-либо другой способ представления текстуры) под ним, чтобы цвет текста отображался на фоне. Короче говоря, я просто хочу нарисовать текстуру темного ящика под моим светло-цветным текстом.Рисование читаемого текста в DirectX 9/C++

Я хочу иметь что-то похожее на текстовое поле в верхней части этого экрана от «Morrowind»: http://nerdtrek.com/wp-content/uploads/2011/11/Morrowind-Screenshot.jpg

Что бы разумный способ сделать это? Я попробовал просто загрузить спрайт и нарисовать его там, но даже если я сосредоточу его на местоположении текста, мне действительно нужно иметь возможность растягивать его произвольно, чтобы соответствовать длине строки текста, которую она сопровождает.

Любые ссылки, рекомендуемые чтения или примеры были бы высоко оценены. Спасибо за ваше время.

ответ

1

Вы можете позвонить ID3DXFont.DrawString с помощью знака DT_CALCRECT. Это должно вернуть вам ширину/высоту прямоугольника, ограничивающего текст, без его рисования.

Используя эту информацию, вы должны легко рисовать любой спрайт, который вы хотите, в качестве фона для текста.

Надеюсь, это поможет!

+0

Спасибо !!! Я неправильно понял, как работает DT_CALCRECT, и это было именно то, что мне было нужно. Теперь у меня есть имена и рабочие бары. Если я могу, я отправлю пример кода позже для людей, которые пытаются сделать то же самое. – Aztal

Смежные вопросы