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

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

Кириллица в OpenGL [D2005, XP]


Чайник ©   (2010-01-20 16:14:00) 

Как загрузить кириллические шрифты в OpenGl?

Создаю фонт так:

 FFont.Name:='Arial Cyr';
 FFontHDC := CreateDC('Display',nil,nil,nil);

 SelectObject(FFontHDC, FFont.Handle);
 IF not wglUseFontOutlines (FFontHDC , 0, 255, GLFONT_LIST, 0, 0.1,  WGL_FONT_POLYGONS, nil) Then
       MessageDlg('Не удалось установить фонт', mtError, [mbOk], 0);


Вывод текста:

procedure TFEditorMain.OutTextGL(Text: AnsiString);
var PCharLitera : PAnsiChar;
begin
  PCharLitera := PAnsiChar(Text);
  glListBase(GLFONT_LIST);
  glCallLists(Length (PCharLitera), GL_UNSIGNED_BYTE, PCharLitera);
end;


Латинские символы - все нормально. Вместо русских - крякозялбли из европейской кодировки. Кто подскажет?

P.S.   FFont.Charset := RUSSIAN_CHARSET;- не помогает...


Чайник   (2010-01-20 17:12:00) [1]

Все оказалось гораздо проще - это чудеса D2009  и юникода.
Поставил wglUseFontOutlinesA вместо wglUseFontOutlines и вуаля!

... блин,два дня парился...


Чайник   (2010-01-20 16:33:00) [2]

> @!!ex

lf - это кто? TFont?


@!!ex   (2010-01-20 16:25:00) [3]

У меня шрифт создается вот так:
 FillChar(lf, SizeOf(lf), 0);
 lf.lfHeight               :=   -1 ;
 lf.lfWeight               :=   FW_NORMAL ;
 lf.lfCharSet              :=   RUSSIAN_CHARSET ;
 lf.lfOutPrecision         :=   OUT_DEFAULT_PRECIS ;
 lf.lfClipPrecision        :=   CLIP_DEFAULT_PRECIS ;
 lf.lfQuality              :=   DEFAULT_QUALITY ;
 lf.lfPitchAndFamily       :=   FF_DONTCARE OR DEFAULT_PITCH;
 lstrcpy (lf.lfFaceName, PChar(FName)) ;

 hFontNew := CreateFontIndirect(lf);
 hOldFont := SelectObject(FDC,hFontNew);

и все работает.


Наверх

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