demo05.dpr 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. program demo05;
  2. {$I zglCustomConfig.cfg}
  3. {$R *.res}
  4. uses
  5. {$IFDEF USE_ZENGL_STATIC}
  6. zgl_main,
  7. zgl_screen,
  8. zgl_window,
  9. zgl_timers,
  10. zgl_keyboard,
  11. zgl_fx,
  12. zgl_render_2d,
  13. zgl_primitives_2d,
  14. zgl_math_2d,
  15. zgl_utils
  16. {$ELSE}
  17. zglHeader
  18. {$ENDIF}
  19. ;
  20. var
  21. calc : Integer;
  22. points : array[ 0..359 ] of zglTPoint2D;
  23. procedure Init;
  24. var
  25. i : Integer;
  26. begin
  27. for i := 0 to 359 do
  28. begin
  29. points[ i ].X := 400 + m_Cos( i ) * ( 96 + random( 32 ) );
  30. points[ i ].Y := 300 + m_Sin( i ) * ( 96 + random( 32 ) );
  31. end;
  32. end;
  33. procedure Draw;
  34. var
  35. i : Integer;
  36. begin
  37. // RU: Óñòàíàâëèâàåì öâåò è àëüôó äëÿ êàæäîé âåðøèíû.
  38. // EN: Set color and alpha for each vertex.
  39. fx2d_SetVCA( $FF0000, $00FF00, $0000FF, $FFFFFF, 255, 255, 255, 255 );
  40. // RU: Ðèñóåì ïðÿìîóãîëüíèê ñ çàëèâêîé(ôëàã PR2D_FILL) ñ èñïîëüçîâàíèåì îòäåëüíûõ öâåòîâ äëÿ êàæäîé âåðøèíû(ôëàã FX2D_VCA).
  41. // EN: Render filled rectangle(flag PR2D_FILL) and use different colors for each vertex(flag FX2D_VCA).
  42. pr2d_Rect( 0, 0, 800, 600, $000000, 255, FX2D_VCA or PR2D_FILL );
  43. // RU: Ðèñóåì â öåíòðå ýêðàíà êðóã ñ ðàäèóñîì 128 ïèêñåëà.
  44. // EN: Render circle in the center of screen with radius 128 pixels.
  45. pr2d_Circle( 400, 300, 128, $000000, 155, 32, PR2D_FILL );
  46. INC( calc );
  47. if calc > 359 Then calc := 0;
  48. points[ calc ].X := 400 + m_Cos( calc ) * ( 96 + random( 32 ) );
  49. points[ calc ].Y := 300 + m_Sin( calc ) * ( 96 + random( 32 ) );
  50. // RU: Ðèñóåì ëèíèè âíóòðè êðóãà.
  51. // EN: Render lines inside the circle.
  52. for i := 0 to 359 do
  53. pr2d_Line( 400, 300, points[ i ].X, points[ i ].Y, $FFFFFF, 255 );
  54. // RU: Ðèñóåì ýëëèïñû ñ çàëèâêîé è áåç, ñî ñãëàæåííûìè êîíòóðàìè(ôëàã PR2D_SMOOTH).
  55. // EN: Render filled ellipses with smoothed edges(flag PR2D_SMOOTH).
  56. pr2d_Ellipse( 400 + 300, 300, 64, 256, $FFFFFF, 55, 32, PR2D_FILL or PR2D_SMOOTH );
  57. pr2d_Ellipse( 400 + 300, 300, 64, 256, $000000, 255, 32, PR2D_SMOOTH );
  58. pr2d_Ellipse( 400 - 300, 300, 64, 256, $FFFFFF, 55, 32, PR2D_FILL or PR2D_SMOOTH );
  59. pr2d_Ellipse( 400 - 300, 300, 64, 256, $000000, 255, 32, PR2D_SMOOTH );
  60. end;
  61. procedure Timer;
  62. begin
  63. if key_Press( K_ESCAPE ) Then zgl_Exit();
  64. key_ClearState();
  65. end;
  66. Begin
  67. {$IFNDEF USE_ZENGL_STATIC}
  68. if not zglLoad( libZenGL ) Then exit;
  69. {$ENDIF}
  70. timer_Add( @Timer, 16 );
  71. zgl_Reg( SYS_LOAD, @Init );
  72. zgl_Reg( SYS_DRAW, @Draw );
  73. wnd_SetCaption( '05 - Primitives' );
  74. wnd_ShowCursor( TRUE );
  75. scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
  76. zgl_Init();
  77. End.