![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CD3DFont текст [Delphi, Windows]
ElectriC © (2007-04-09 15:50:00)Кто-нибудь использовал в своих 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 не предлагать!!!
ElectriC (2007-04-12 00:29:00) [1]
> Belorus ©
Не имеет значения:|
Belorus (2007-04-11 01:36:00) [2]А русское спасибо уже не модно ?
Его заменили
Thanks
Thx
10x
Thnkz
СПС
спсб ?
Вам приятно видеть ТАКОЕ как знак благодарности ?
ElectriC (2007-04-10 20:23:00) [3]Всё работает)) Thanks.
Sapersky (2007-04-10 19:02:00) [4]Сейчас заметил, что С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). При превышении размера текстуры программа выводит текст неправильно, но не вылетает.
ElectriC (2007-04-10 17:22:00) [5]Можешь написать какие строчки изменять (если надо то изменение размера тектуры)?
Sapersky (2007-04-10 14:54:00) [6]Пробовал хотя бы то, что я говорил?
Я пробовал, ДВЕ строчки изменил, даже размер текстуры не трогал (хотя по-хорошему надо бы, оно в самом начале InitDeviceObjects). Всё работает.
ElectriC (2007-04-10 14:08:00) [7]Можешь помочь?
P.S. Давай вышлю те на мыло модуль D3DXFont(если нет). Сам замучался, чесслово - ничего не получается!
Sapersky (2007-04-10 13:41:00) [8]Тогда уж от #32 до #255. Разумеется, нужно подправить размеры разного рода массивов и общий размер текстуры увеличить.
А ID3DXFont в 9-м DX, говорят, оптимизировали.