demo05.pas 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. program demo05;
  2. {$I zglCustomConfig.cfg}
  3. uses
  4. zgl_main,
  5. zgl_screen,
  6. zgl_window,
  7. zgl_timers,
  8. zgl_fx,
  9. zgl_render_2d,
  10. zgl_primitives_2d,
  11. zgl_math_2d,
  12. zgl_utils
  13. ;
  14. var
  15. calc : Integer;
  16. points : array[ 0..359 ] of zglTPoint2D;
  17. procedure Init;
  18. var
  19. i : Integer;
  20. begin
  21. zgl_Enable( CORRECT_RESOLUTION );
  22. scr_CorrectResolution( 800, 600 );
  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 );
  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, $FFFFFF, 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, 55, 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, 55, 32, PR2D_FILL or PR2D_SMOOTH );
  55. pr2d_Ellipse( 400 - 300, 300, 64, 256, $000000, 255, 32, PR2D_SMOOTH );
  56. end;
  57. Begin
  58. zgl_Reg( SYS_LOAD, @Init );
  59. zgl_Reg( SYS_DRAW, @Draw );
  60. scr_SetOptions( 800, 600, REFRESH_MAXIMUM, TRUE, TRUE );
  61. zgl_Init();
  62. End.