Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.21;
Скачать: CL | DM;

Вниз

CD3DFont текст   Найти похожие ветки 

 
ElectriC ©   (2007-04-09 15:50) [0]

Кто-нибудь использовал в своих 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 не предлагать!!!


 
Sapersky   (2007-04-10 13:41) [1]

Тогда уж от #32 до #255. Разумеется, нужно подправить размеры разного рода массивов и общий размер текстуры увеличить.

А ID3DXFont в 9-м DX, говорят, оптимизировали.


 
ElectriC ©   (2007-04-10 14:08) [2]

Можешь помочь?
P.S. Давай вышлю те на мыло модуль D3DXFont(если нет). Сам замучался, чесслово - ничего не получается!


 
Sapersky   (2007-04-10 14:54) [3]

Пробовал хотя бы то, что я говорил?
Я пробовал, ДВЕ строчки изменил, даже размер текстуры не трогал (хотя по-хорошему надо бы, оно в самом начале InitDeviceObjects). Всё работает.


 
ElectriC ©   (2007-04-10 17:22) [4]

Можешь написать какие строчки изменять (если надо то изменение размера тектуры)?


 
Sapersky   (2007-04-10 19:02) [5]

Сейчас заметил, что С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 20:23) [6]

Всё работает)) Thanks.


 
Belorus ©   (2007-04-11 01:36) [7]

А русское спасибо уже не модно ?
Его заменили
Thanks
Thx
10x
Thnkz
СПС
спсб ?

Вам приятно видеть ТАКОЕ как знак благодарности ?


 
ElectriC ©   (2007-04-12 00:29) [8]


> Belorus ©

Не имеет значения:|



Страницы: 1 вся ветка

Текущий архив: 2008.12.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
2-1226151544
аврам
2008-11-08 16:39
2008.12.21
потоки


15-1224490743
Добежал
2008-10-20 12:19
2008.12.21
Vista home and Fast User Switching


15-1223732165
TUser
2008-10-11 17:36
2008.12.21
Нобелевская премия Мира


2-1226757057
Ruzzz
2008-11-15 16:50
2008.12.21
способ получения в EAX, значение флага cf?


15-1224230475
b z
2008-10-17 12:01
2008.12.21
Microsoft раздаёт «Боекомплект разработчика»