Главная страница
    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.078 c
3-1211879613
Dmitry_177
2008-05-27 13:13
2008.12.21
ADO API определить количество записей


3-1211744065
j111
2008-05-25 23:34
2008.12.21
Копирование данных из одного набора данных в другой


15-1224652490
Риппер
2008-10-22 09:14
2008.12.21
The instruction at "0x77f5d61b" referenced memory at "0x00000010"


1-1204636982
misha_gr
2008-03-04 16:23
2008.12.21
Синхронизировать скроллинг двух TRichEdit


2-1226656814
Serega87
2008-11-14 13:00
2008.12.21
Количество веток в ветке





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский