Форум: "Игры";
Текущий архив: 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