Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

OpenGL не хочет отображать букву "я" [Delphi, Windows]


alpha5 ©   (2006-10-15 17:19:00) 

Привет всем!
У меня возник такой вопрос: почесу OpenGL не хочет отображать малую букву "я" ?
Код такой:
на создание формы:

{создание графических объектов на основе символов шрифта формы}
 wglUseFontBitmaps(canvas.handle, 0, 255, 1000);


в этапе прорисовки:

glRasterPos3f( 1, 2, 0 );
OutText(PChar( 'Брянская область' ));


и сама процедура OutText:

procedure TFormMain.OutText (txt : PChar);
begin
glPushAttrib(GL_ALL_ATTRIB_BITS);
glListBase(1000);
glCallLists(Length (txt), GL_UNSIGNED_BYTE, txt);
glPopAttrib;
end;


Может быть возможно подключать файл шрифтов? Как это сделать - не знаю.
Или тут проблема в другом?

Подскажите пожалуйста!!! Очень нужно

Заранее спасибо.


alpha5   (2006-10-15 21:46:00) [1]

н-да, интересно, но нет. Хотя если так писать, то писать
"превед, брйанзкайа облаздь"
или типа того.


Ketmar   (2006-10-15 21:39:00) [2]

пиши "брйанскайа область, камрады!"
%-)


alpha5   (2006-10-15 21:36:00) [3]

типа:
Брянская область
Владимирская область
Нижегородская область

- это подписи


k1borg   (2006-10-15 21:32:00) [4]

а скажи, если не секрет зачем тебе буква "я" :))


alpha5   (2006-10-15 21:16:00) [5]

Rial, СПАСИБО тебе большое. Всё получилось.
Просто я забыл подкорректировать процедуру
procedure TFormMain.OutText (txt : PChar);

А насчёт этого вопроса

> Только вот интересно, до моей поправки только ли буква
> "я" не выводилась ?

выводились все буквы, кроме вот этой вот "злой" буквы "я" (по крайней мере других осечек не замечал).
Я даже пробовал выводить "Я" большую. Получалось.


Rial   (2006-10-15 20:11:00) [6]

> [2] alpha5 ©   (15.10.06 19:39)
> Нет, к сожалению, не помогло.
> Вообще ничего не выводится.


Стоит попробывать отредактировать и другую часть кода.

procedure TFormMain.OutText(Const Id : Integer; Const Txt : PChar);
begin
glPushAttrib(GL_ALL_ATTRIB_BITS);
 glListBase(Id); //Тот самый наш идентификатор, запомним его
 glCallLists(StrLen(Txt), GL_UNSIGNED_BYTE, Txt);
glPopAttrib;
end;

Можно и так : ))

procedure TFormMain.OutText(Const Id : Integer; Txt : String);
begin
Txt :=Txt + #0;
glPushAttrib(GL_ALL_ATTRIB_BITS);
 glListBase(Id);
 glCallLists(Length(Txt) - 1, GL_UNSIGNED_BYTE, @Txt[1]);
glPopAttrib;
end;

В конце, естественно :
 glDeleteLists(Id, NumOfSymbols + 1);

Только вот интересно, до моей поправки только ли буква
"я" не выводилась ?

И еще. Если и теперь что то не работает, то ошибка, очевидно,
в другом месте. Так что если что, копируй больше кода.


alpha5   (2006-10-15 19:39:00) [7]

Нет, к сожалению, не помогло.
Вообще ничего не выводится.


Rial   (2006-10-15 18:18:00) [8]

Const
NumOfSymbols = $100;

Id:=glGenLists(NumOfSymbols + 1);
wglUseFontBitmaps(canvas.handle, 0, NumOfSymbols, Id);


Наверх

Титульная страница Поиск, карта сайта Написать письмо