Difference between revisions of "ZenGL Tutorial 2/ru"

From Free Pascal wiki
Jump to navigationJump to search
(New page: == Создание шрифта ZenGL == Создадим шрифт ZenGL. Для решения поставленной задачи нам потребуется скачать ге...)
 
Line 5: Line 5:
  
 
[[Image:zenfont.png]]
 
[[Image:zenfont.png]]
 
''Agency FB-Regular-18pt.zfi''
 
 
Once we have a font created we need to follow those steps to draw in the ZenGL window.
 
  
 
== Create program ==
 
== Create program ==

Revision as of 20:25, 30 May 2011

Создание шрифта ZenGL

Создадим шрифт ZenGL. Для решения поставленной задачи нам потребуется скачать генератор шрифтов ZenFont. Запустив программу, вы увидите что-то похожее на картинку ниже:

zenfont.png

Create program

  • Create a new pascal program and add reference to ZenGL like was explained in the first tutorial.
  • Create those directories:

projectname\bin

projectname\data

projectname\project

  • Save your project in "projectname\project".
  • Put the font you has created in "projectname\data"
  • Go to Project > Options > Paths in Target file name write "..\bin\project1".

Исходный код

<delphi>var

 dirRes     : String {$IFNDEF DARWIN} = '../data/' {$ENDIF}; // this is the directory where resources are placed
 fnt        : zglPFont; // this is the font we will use </delphi>

Загрузим шрифт: <delphi>procedure Init; begin

 fnt := font_LoadFromFile( dirRes + 'Agency FB-Regular-18pt.zfi' );

end; </delphi>

Процедура рисования (тут мы рисуем текст нашим шрифтом): <delphi>procedure Draw; var

 rect: zglTRect;

begin

 text_Draw( fnt, 0, 0, 'Sample Text. Press ESC to EXIT.' );
 text_DrawEx( fnt, 32, 32, 1.5, 0, 'Sample Text with DrawEx - Scale 1.5 - Alpha 150', 150 );
 rect.H:=128;
 rect.W:=400;
 rect.X:=0;
 rect.Y:=96;
 pr2d_rect(rect.X,rect.Y,rect.W,rect.H,$FFFFFF,100);
 text_DrawInRect(fnt,rect,
 'Sample multiline text in rect.' + #10 +
 'Sample multiline text in rect.'+ #10 +
 'Sample multiline text in rect.');

end; </delphi>

Код выхода из программы по нажатию ESC: <delphi>procedure Timer; begin

 if key_Press( K_ESCAPE ) Then zgl_Exit();
 key_ClearState();

end; </delphi>

Результат

Теперь вы можете увидеть текст напечатанный нашим шрифтом

zengltext.png

Конечный код будет выглядет примено так:

<delphi>program project1;

{$IFDEF WINDOWS}

 {$R *.res}

{$ENDIF} {$DEFINE STATIC}

uses

 {$IFNDEF STATIC}
 zglHeader
 {$ELSE}
 zgl_main,
 zgl_screen,
 zgl_window,
 zgl_timers,
 zgl_keyboard,
 zgl_font,
 zgl_text,
 zgl_textures,
 zgl_textures_tga,
 zgl_primitives_2d,
 zgl_utils,
 zgl_math_2d
 {$ENDIF}
 ;

var

 dirRes     : String {$IFNDEF DARWIN} = '../data/' {$ENDIF};
 fnt        : zglPFont;

procedure Init; begin

 fnt := font_LoadFromFile( dirRes + 'Agency FB-Regular-18pt.zfi' );

end;

procedure Draw; var

 rect: zglTRect;

begin

 text_Draw( fnt, 0, 0, 'Sample Text. Press ESC to EXIT.' );
 text_DrawEx( fnt, 32, 32, 1.5, 0, 'Sample Text with DrawEx - Scale 1.5 - Alpha 150', 150 );
 rect.H:=128;
 rect.W:=400;
 rect.X:=0;
 rect.Y:=96;
 pr2d_rect(rect.X,rect.Y,rect.W,rect.H,$FFFFFF,100);
 text_DrawInRect(fnt,rect,
 'Sample multiline text in rect.' + #10 +
 'Sample multiline text in rect.'+ #10 +
 'Sample multiline text in rect.');

end;

procedure Timer; begin

 if key_Press( K_ESCAPE ) Then zgl_Exit();
 key_ClearState();

end;

Begin

 {$IFNDEF STATIC}
 zglLoad( libZenGL );
 {$ENDIF}
 timer_Add( @Timer, 16 );
 zgl_Reg( SYS_LOAD, @Init );
 zgl_Reg( SYS_DRAW, @Draw );
 zgl_Enable( APP_USE_UTF8 );
 wnd_SetCaption( 'Sample Text' );
 wnd_ShowCursor( TRUE );
 scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
 zgl_Init();

End. </delphi>