demo05.dpr 2.4 KB

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