Главная страница
    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.042 c
2-1226150659
unassigned
2008-11-08 16:24
2008.12.21
Как это можно решить?


1-1204827510
wild
2008-03-06 21:18
2008.12.21
Гибрид StringGrid и ComboBox


15-1224158164
axis_of_evil
2008-10-16 15:56
2008.12.21
право на downgrade ..


15-1224492287
leonidus
2008-10-20 12:44
2008.12.21
Подскажите платный компонент для отображения превьюшек


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