demo01.dpr 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. program demo01;
  2. // RU: Ýòîò ôàéë ñîäåðæèò íåêîòîðûå íàñòðîéêè(íàïðèìåð èñïîëüçîâàòü ëè ñòàòè÷åñêóþ êîìïèëÿöèþ) è îïðåäåëåíèÿ ÎÑ ïîä êîòîðóþ ïðîèñõîäèò êîìïèëÿöèÿ.
  3. // EN: This file contains some options(e.g. whether to use static compilation) and defines of OS for which is compilation going.
  4. {$I zglCustomConfig.cfg}
  5. {$R *.res}
  6. uses
  7. {$IFDEF USE_ZENGL_STATIC}
  8. // RU: Ïðè èñïîëüçîâàíèè ñòàòè÷åñêîé êîìïèëÿöèè íåîáõîäèìî ïîäêëþ÷àòü ìîäóëè ZenGL ñîäåðæàùèå íåîáõîäèìûé ôóíêöèîíàë.
  9. // EN: Using static compilation needs to use ZenGL units with needed functionality.
  10. zgl_main,
  11. zgl_screen,
  12. zgl_window,
  13. zgl_timers,
  14. zgl_utils
  15. {$ELSE}
  16. // RU: Èñïîëüçóÿ ZenGL â êà÷åñòâå áèáëèîòåêè(so, dll èëè dylib) íóæåí âñåãî îäèí çàãîëîâî÷íûé ôàéë.
  17. // EN: Using ZenGL as a shared library(so, dll or dylib) needs only one header.
  18. zglHeader
  19. {$ENDIF}
  20. ;
  21. var
  22. DirApp : UTF8String;
  23. DirHome : UTF8String;
  24. procedure Init;
  25. begin
  26. // RU: Òóò ìîæíî âûïîëíÿòü çàãðóçêó îñíîâíûõ ðåñóðñîâ.
  27. // EN: Here can be loading of main resources.
  28. end;
  29. procedure Draw;
  30. begin
  31. // RU: Òóò "ðèñóåì" ÷òî óãîäíî :)
  32. // EN: Here "draw" anything :)
  33. end;
  34. procedure Update( dt : Double );
  35. begin
  36. // RU: Ýòà ôóíêöèÿ íàçåìåíèìà äëÿ ðåàëèçàöèÿ ïëàâíîãî äâèæåíèÿ ÷åãî-ëèáî, ò.ê. òî÷íîñòü òàéìåðîâ îãðàíè÷åíà FPS.
  37. // EN: This function is the best way to implement smooth moving of something, because accuracy of timers are restricted by FPS.
  38. end;
  39. procedure Timer;
  40. begin
  41. // RU: Áóäåì â çàãîëîâêå ïîêàçûâàòü êîëè÷åñòâî êàäðîâ â ñåêóíäó.
  42. // EN: Caption will show the frames per second.
  43. wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
  44. end;
  45. procedure Quit;
  46. begin
  47. //
  48. end;
  49. Begin
  50. // RU: Êîä íèæå çàãðóæàåò áèáëèîòåêó åñëè ñòàòè÷åñêàÿ êîìïèëÿöèÿ íå èñïîëüçóåòñÿ.
  51. // EN: Code below loads a library if static compilation is not used.
  52. {$IFNDEF USE_ZENGL_STATIC}
  53. if not zglLoad( libZenGL ) Then exit;
  54. {$ENDIF}
  55. // RU: Äëÿ çàãðóçêè/ñîçäàíèÿ êàêèõ-òî ñâîèõ íàñòðîåê/ïðîôèëåé/etc. ìîæíî ïîëó÷èòü ïóòü ê äîìàøåíåìó êàòàëîãó ïîëüçîâàòåëÿ, èëè ê èñïîëíÿåìîìó ôàéëó(íå ðàáîòàåò äëÿ GNU/Linux).
  56. // EN: For loading/creating your own options/profiles/etc. you can get path to user home directory, or to executable file(not works for GNU/Linux).
  57. DirApp := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
  58. DirHome := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_HOME ) ) );
  59. // RU: Ñîçäàåì òàéìåð ñ èíòåðâàëîì 1000ìñ.
  60. // EN: Create a timer with interval 1000ms.
  61. timer_Add( @Timer, 1000 );
  62. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, ÷òî âûïîëíèòñÿ ñðàçó ïîñëå èíèöèàëèçàöèè ZenGL.
  63. // EN: Register the procedure, that will be executed after ZenGL initialization.
  64. zgl_Reg( SYS_LOAD, @Init );
  65. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, ãäå áóäåò ïðîèñõîäèòü ðåíäåð.
  66. // EN: Register the render procedure.
  67. zgl_Reg( SYS_DRAW, @Draw );
  68. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, êîòîðàÿ áóäåò ïðèíèìàòü ðàçíèöó âðåìåíè ìåæäó êàäðàìè.
  69. // EN: Register the procedure, that will get delta time between the frames.
  70. zgl_Reg( SYS_UPDATE, @Update );
  71. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, êîòîðàÿ âûïîëíèòñÿ ïîñëå çàâåðøåíèÿ ðàáîòû ZenGL.
  72. // EN: Register the procedure, that will be executed after ZenGL shutdown.
  73. zgl_Reg( SYS_EXIT, @Quit );
  74. // RU: Óñòàíàâëèâàåì çàãîëîâîê îêíà.
  75. // EN: Set the caption of the window.
  76. wnd_SetCaption( '01 - Initialization' );
  77. // RU: Ðàçðåøàåì êóðñîð ìûøè.
  78. // EN: Allow to show the mouse cursor.
  79. wnd_ShowCursor( TRUE );
  80. // RU: Óêàçûâàåì ïåðâîíà÷àëüíûå íàñòðîéêè.
  81. // EN: Set screen options.
  82. scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
  83. // RU: Èíèöèàëèçèðóåì ZenGL.
  84. // EN: Initialize ZenGL.
  85. zgl_Init();
  86. End.