Delphi a OpenGL - 2. díl

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: ?source/*-
Datum: 29.3.2005
Hodnocení/Hlasovalo: 1.9/10

Druhý díl seriálu Delphi a OpenGL. Bitmap Font

Bitmap font

Teď asi potěším příznivce psaní kódu, protože už nebudeme ani tak nic nastavovat jako programovat. Do teď to bylo jen takový úvod abyste viděli co OpenGl nabízí. Na začátek budeme potřebovat nějakou tu bitmapu s textem. já použiju tu z příkladů, ale pokud se rozhodnete pro jinou, tak to není problém. Tu kterou použiju já, si můžete stáhnout zde. Takže začneme s tím, že si na formulář nové aplikace dáme: GLScene, GLSceneViewer, AsyncTimer, GLCadencer, Timer a BitmapFont. GLScene Editor si nastavíme nějak takle. Pokud jste se rozhodli stáhnout si nastavení scény GLScene Editoru, tak pro ty, kteří to nevědí. Uděláme tak, že si otevřete GLScene Editor a kliknutím na tlačítko "Load whole scene" si vybereme váš stažený soubor. Do DummyCube1 si vložte HUDText1, který leží v nabítce Add object v podnabítce HUD object. U našeho HUDTextu1 si v Inspectoru nastavíme u políčka BitmapFont BitmapFont1. Ještě je třeba nastavit u GLSceneViewer1 u Camera GLCamera1. U komponenty BitmapFont1 u vlastnosti (prorerties) vyberte Ranges a klikněre na tři tečky. Otevře se okínko Editing BitmapFont1.Ranges. Vněm klikněte 2x na "Add New", prostě abyste měli 2 nové položky. To je z nastavování parametrů vše, a můžem začít psát program. Do události formuláře OnCreate si vložíme toto.

 

procedure TForm1.FormCreate(Sender: TObject);
begin
  BitmapFont1.Glyphs.LoadFromFile('darkgold_font.bmp');     // načtení našeho písma do BitmapFontu1 ...
  HUDText1.Text:=('Delphi a OpenGL');     // Zde napíšeme požadovaný text ...
  // nastavení výšky a šířky řádku ...
  BitmapFont1.CharWidth:=30;
  BitmapFont1.CharHeight:=30;
  BitmapFont1.VSpace:=3;
  BitmapFont1.HSpace:=6;
  BitmapFont1.GlyphsIntervalX:=1;
  BitmapFont1.GlyphsIntervalY:=1;
  // definování naší znakové sady ...
  BitmapFont1.Ranges.Items[0].StartASCII:=#32;
  BitmapFont1.Ranges.Items[0].StartGlyphIdx:=0;
  BitmapFont1.Ranges.Items[0].StopASCII:='Z';

  BitmapFont1.Ranges.Items[1].StartASCII:='a';
  BitmapFont1.Ranges.Items[1].StartGlyphIdx:=33;
  BitmapFont1.Ranges.Items[1].StopASCII:='z';
end;


Naše aplikace

 

Myslím že funkce zdrojového kódu je dobře okomentovaná, proto se stím nebudu zdržovat. Teď, když program spustíte, tak by se vám měl objevit text. Ale protože věci, které se nehýbou nemám zrovna v lásce, přidáme pohyb. Proto u GLCadenceru1 natavíme v políčku Scene hodnotu GLScene1. Pak u události OnProgress napíšeme tento kód:

 

HUDText1.Position.Y:=HUDText1.Position.Y-0.2;  // zajištení pohybu písma ( měníme souřadnici Y záporně, tím pádem to půjde nahoru [při přičítání = dolů])

 

To je pro dnešek všechno, doufám, že se uvidíme příště ...

 

?source/*-