Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.927 c
2-1226519181
IVAKA_27
2008-11-12 22:46
2008.12.21
TreeNode


2-1226410603
Роман
2008-11-11 16:36
2008.12.21
Перевод даты в порядковый номер дня в году


1-1204908815
Воронтсов
2008-03-07 19:53
2008.12.21
работа с TOpenDialog


2-1226488773
Andrey_ka
2008-11-12 14:19
2008.12.21
манцпуляции с памятью


15-1224036802
Slider007
2008-10-15 06:13
2008.12.21
С днем рождения ! 15 октября 2008 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский