Многие пишут что GraphWPF быстрее GraphABC, решил проверить обрабатывая объекты, и у меня вышло что GraphABC быстрее GraphWPF. Начал обрабатывать 5000 кругов, сначало рисовал, потом менял координаты. Если знаете как можно исправить то жду ответа :3. (Про GraphWPF) Ах, да, я это обрабатывал через BeginFrameBasedAnimation.
Приведите конкретный код которым тестировали.
Пишу на память если что, компа рядом нету, но суть кода напишу.
1)----------------------
Uses GraphABC;
Procedure Render; Begin For var I:=0 to 5000 do Circle(random(0,Window.Width),random(0,Window.Height), 10); Redraw: Clearwindow;
End;
Begin While true do Render; end.
2)---------------------------
Uses GraphWPF;
Procedure Render; Begin For var I:=0 to 5000 do Circle(random(0,Window.Width),random(0,Window.Height), 10,colors.Red); End;
Begin BeginFrameAnimationTime(Render, 200) ; end;
Как то так.
- 
Код надо выделять так: 
 ```
 код
 ```
 Знак ` находится за Ё в англ. клаве.
- 
Я сказал конкретный код, из памяти не годится. 
Тогда чуть позже напишу
Ваша программа даже не компилируется.
Что пишет компилятора?
- Очевидная ошибка - ;вместо..
- 
Program3.pas(5) : Неизвестное имя 'BeginFrameAnimationTime'.
- Метод BeginFrameBasedAnimationTimeпринимает параметр типаprocedure(dt: real), а неprocedure.
- Насколько помню, такой стиль написания кода - когда операторы начинаются с большой буквы присутствует в Visual Basic, здесь же PascalABC.NET.
- Цикл forможет быть заменён наloop, поскольку счётчик цикла не фигурирует в теле цикла.
Ах, точно вот эту процедуру использовал BeginFrameBasedAnimation
uses GraphWPF;
procedure Render();
begin
  loop 50 do
    Circle(Random(0, Window.Width), Random(0, Window.Height), 10, colors.Red);
end;
begin
  BeginFrameBasedAnimation(Render);
end.
Хотя бы рабочий вариант. Дальше - меняйте под себя.
А если будет 5000 объектов?
А вот на graphABC меньше тормозит, возможно я использовал for, но я и в ABC тоже так использовал
Мне бы такой макбук)
Подправил ваши коды и добавил счётчик fps (и изменил на 5 объектов, дальше объясню почему):
uses GraphABC;
procedure Render;
begin
  
  loop 5 do
    Circle(random(0, Window.Width), random(0, Window.Height), 10);
  
end;
begin
  var i := 0;
  var sw := new System.Diagnostics.Stopwatch;
  
  LockDrawing;
  SetConsoleIO;
  
  while true do
  begin
    Window.Clear;
    
    sw.Start;
    Render;
    Redraw;
    sw.Stop;
    
    i += 1;
    if i=60 then
    begin
      writeln(sw.Elapsed);
      sw.Reset;
      i := 0;
    end;
    
  end;
  
end.
uses GraphWPF;
procedure Render;
begin
  
  loop 5 do
    Circle(random(0, Window.Width), random(0, Window.Height), 10);
  
end;
begin
  var i := 0;
  var sw := new System.Diagnostics.Stopwatch;
  
  while true do
  begin
    Window.Clear;
    
    sw.Start;
    Redraw(Render);
    sw.Stop;
    
    i += 1;
    if i=3000 then
    begin
      writeln(sw.Elapsed);
      sw.Reset;
      i := 0;
    end;
    
  end;
end.
GraphABC рендерит это в 30fps (пишет 2 сек на 60 кадров).
В то же время GraphWPF справляется с 3к кадрами в секунду (поэтому я поставил 3000 а не 60 в счётчик, иначе консоль засирает маленькими числами).
WPF дохнет на большом кол-ве объектов. И вообще не на много лучше по производительности чем GDI (на котором основан GABC). Но WPF, по крайней мере, адекватно себя ведёт с маленьким кол-вом объектов. То есть нет неистовых тормозов в Redraw, не позволяющих получать больше 20fps в нормальных программах.
Если вам нужна серьёзная графика - используйте DirectX или OpenGL. Там и шейдеры будут доступны, и в целом всевозможная низкоуровневая графика.
P.S. Не забывайте отключать отладку и запускать в режиме Shift+F9 при тестировании производительности. Иначе результаты неправильные.
Вы ещё не спрашивали сколько он стоит… И не надо.  Скажем так, достаточно много.
 Скажем так, достаточно много.
Спасибо за код и объяснения. И еще, какая библиотека лучше подойдет для симуляторов, или обработку большого кол.во объектов?
Я уже написал
Чуть ли не все современные распространённые библиотеки (в то числе и управляемые, то есть подключаемые через $reference) для серьёзной графики - обёртки или для DirectX, или для OpenGL. OpenGL проще для новичков в низкоуровневой графике. А у DirectX на много больше встроенного функционала. Ну и DirectX немного высокоуровневее в большинстве своего функционала.

 Институт математики, механики и компьютерных наук ЮФУ, 2005–2021
 Институт математики, механики и компьютерных наук ЮФУ, 2005–2021