-
Кто-нибудь использовал в своих DirectX программах CD3DFont текст? Проблема заключается в том, что D3DFont отображает(читай "рисует") только англиийские символы. Например, когда пишешь "Игра Quake" отображается только "Quake". Подскажите, в чём может быть проблема?
P.S. В модуле D3DFont нашёл такие строчки (возможно отвечающие за отображаемые сиволы): ...
// For each character, draw text on the DC and advance the current position for c := #32 to #126 do begin str[0] := c; if not GetTextExtentPoint32(hDC, str, 1, size) then begin Result:= E_FAIL; Exit; end; ...
Пробовал менять на for c := #192 to #255 do - программа виснет при загрузке.
P.P.S. ID3DXFont не предлагать!!!
-
Тогда уж от #32 до #255. Разумеется, нужно подправить размеры разного рода массивов и общий размер текстуры увеличить.
А ID3DXFont в 9-м DX, говорят, оптимизировали.
-
Можешь помочь? P.S. Давай вышлю те на мыло модуль D3DXFont(если нет). Сам замучался, чесслово - ничего не получается!
-
Пробовал хотя бы то, что я говорил? Я пробовал, ДВЕ строчки изменил, даже размер текстуры не трогал (хотя по-хорошему надо бы, оно в самом начале InitDeviceObjects). Всё работает.
-
Можешь написать какие строчки изменять (если надо то изменение размера тектуры)?
-
Сейчас заметил, что СD3DFont у меня несколько другой (DX8, 04.04.02), но наверняка все версии работают по одному принципу.
for c:= 32 to 255{было 126} do поле класса: m_fTexCoords: array[0..256{было 128}-32-1, 0..3] of Single;
Размер текстуры определяется весьма приблизительно по размеру шрифта: if (m_dwFontHeight > 40) then begin m_dwTexWidth:= 1024; m_dwTexHeight:= m_dwTexWidth; end else if (m_dwFontHeight > 20) then begin m_dwTexHeight:= 512; m_dwTexWidth:= m_dwTexHeight; end else ...
Можно вместо 40 и 20 поставить 30 и 14, например (проверял с Arial). При превышении размера текстуры программа выводит текст неправильно, но не вылетает.
-
Всё работает)) Thanks.
-
А русское спасибо уже не модно ? Его заменили Thanks Thx 10x Thnkz СПС спсб ?
Вам приятно видеть ТАКОЕ как знак благодарности ?
-
> Belorus ©
Не имеет значения:|
|