demo01.dpr 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. // RU: Ïðè èñïîëüçîâàíèè ñòàòè÷åñêîé êîìïèëÿöèè íåîáõîäèìî ïîäêëþ÷àòü ìîäóëè ZenGL ñîäåðæàùèå íåîáõîäèìûé ôóíêöèîíàë.
  8. // EN: Using static compilation needs to use ZenGL units with needed functionality.
  9. zgl_screen,
  10. zgl_window,
  11. zgl_timers,
  12. zgl_utils,
  13. zgl_application
  14. ;
  15. var
  16. DirApp : UTF8String;
  17. DirHome : UTF8String;
  18. TimeStart: Byte;
  19. procedure Init;
  20. begin
  21. // RU: Òóò ìîæíî âûïîëíÿòü çàãðóçêó îñíîâíûõ ðåñóðñîâ.
  22. // EN: Here can be loading of main resources.
  23. end;
  24. procedure Draw;
  25. begin
  26. // RU: Òóò "ðèñóåì" ÷òî óãîäíî :)
  27. // EN: Here "draw" anything :)
  28. end;
  29. procedure Update( dt : Double );
  30. begin
  31. // RU: Ýòà ôóíêöèÿ íàçåìåíèìà äëÿ ðåàëèçàöèÿ ïëàâíîãî äâèæåíèÿ ÷åãî-ëèáî, ò.ê. òî÷íîñòü òàéìåðîâ îãðàíè÷åíà FPS.
  32. // EN: This function is the best way to implement smooth moving of something, because accuracy of timers are restricted by FPS.
  33. end;
  34. procedure Timer;
  35. begin
  36. // RU: Áóäåì â çàãîëîâêå ïîêàçûâàòü êîëè÷åñòâî êàäðîâ â ñåêóíäó.
  37. // EN: Caption will show the frames per second.
  38. wnd_SetCaption(utf8_Copy('01 - Initialization[ FPS: ' + u_IntToStr(zgl_Get(RENDER_FPS)) + ' ]'));
  39. end;
  40. procedure Quit;
  41. begin
  42. //
  43. end;
  44. Begin
  45. // RU: Äëÿ çàãðóçêè/ñîçäàíèÿ êàêèõ-òî ñâîèõ íàñòðîåê/ïðîôèëåé/etc. ìîæíî ïîëó÷èòü ïóòü ê äîìàøåíåìó êàòàëîãó ïîëüçîâàòåëÿ, èëè ê èñïîëíÿåìîìó ôàéëó(íå ðàáîòàåò äëÿ GNU/Linux).
  46. // 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).
  47. DirApp := utf8_Copy(PAnsiChar(zgl_Get(DIRECTORY_APPLICATION)));
  48. DirHome := utf8_Copy(PAnsiChar(zgl_Get(DIRECTORY_HOME)));
  49. // RU: Ñîçäàåì òàéìåð ñ èíòåðâàëîì 1000ìñ.
  50. // EN: Create a timer with interval 1000ms.
  51. TimeStart := timer_Add(@Timer, 1000, Start);
  52. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, ÷òî âûïîëíèòñÿ ñðàçó ïîñëå èíèöèàëèçàöèè ZenGL.
  53. // EN: Register the procedure, that will be executed after ZenGL initialization.
  54. zgl_Reg(SYS_LOAD, @Init);
  55. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, ãäå áóäåò ïðîèñõîäèòü ðåíäåð.
  56. // EN: Register the render procedure.
  57. zgl_Reg(SYS_DRAW, @Draw);
  58. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, êîòîðàÿ áóäåò ïðèíèìàòü ðàçíèöó âðåìåíè ìåæäó êàäðàìè.
  59. // EN: Register the procedure, that will get delta time between the frames.
  60. zgl_Reg(SYS_UPDATE, @Update);
  61. // RU: Ðåãèñòðèðóåì ïðîöåäóðó, êîòîðàÿ âûïîëíèòñÿ ïîñëå çàâåðøåíèÿ ðàáîòû ZenGL.
  62. // EN: Register the procedure, that will be executed after ZenGL shutdown.
  63. zgl_Reg(SYS_EXIT, @Quit);
  64. // RU: Óñòàíàâëèâàåì çàãîëîâîê îêíà.
  65. // EN: Set the caption of the window.
  66. wndCaption := utf8_Copy('01 - Initialization');
  67. // RU: Ðàçðåøàåì êóðñîð ìûøè, ïî óìîë÷àíèþ ñòîèò True.
  68. // EN: Allow to show the mouse cursor.
  69. appShowCursor := True;
  70. // RU: Óêàçûâàåì ïåðâîíà÷àëüíûå íàñòðîéêè. Ïî óìîë÷àíèþ èìåííî òàê âñ¸ è ñòîèò.
  71. // EN: Set screen options.
  72. zgl_SetParam(800, 600, false, false);
  73. // RU: Èíèöèàëèçèðóåì ZenGL.
  74. // EN: Initialize ZenGL.
  75. zgl_Init();
  76. End.