Szukałem szukałem i nie mogłem znaleźć. Proszę czy mógłby ktoś z bardziej doświadczonych forumowiczów wytłumaczyć mi linijka po linijce jak działa ten kod albo podał linki do materiałów wyjaśniających? Bo nawet nie wiem co w google wpisać :(
unit U_OpenGLNauka;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
OpenGLContext;
type
{ TForm1 }
TForm1 = class(TForm)
OpenGLControl1: TOpenGLControl;
procedure FormCreate(Sender: TObject);
procedure OpenGLControl1Paint(Sender: TObject);
procedure OpenGLControl1Resize(Sender: TObject);
procedure OnAppIdle(Sender: TObject; var Done: Boolean);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.OnAppIdle(Sender: TObject; var Done: Boolean);
begin
Done:=false;
OpenGLControl1.Invalidate;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if Sender=nil then ;
OpenGLControl1:=TOpenGLControl.Create(Self);
with OpenGLControl1 do begin
Name:='OpenGLControl1';
Align:=alClient;
Parent:=Self;
OnPaint:=@OpenGLControl1Paint;
OnResize:=@OpenGLControl1Resize;
AutoResizeViewport:=true;
end;
Application.AddOnIdleHandler(@OnAppIdle);
end;
procedure TForm1.OpenGLControl1Paint(Sender: TObject);
begin
// Procedury OpenGL do rysowania które już ogarniam więc ich tutaj nie wpisałem.
end;
procedure TForm1.OpenGLControl1Resize(Sender: TObject);
begin
if Sender=nil then ;
if OpenGLControl1.Height <= 0 then exit;
end;
end.
Co wiem i co potrzebuje wiedzieć:
- Procedura OpenGLControl1Resize ma za zadanie utrzymać rozmiar okna do rysowania taki sam jak rozmiar całego okna aplikacji ale nie rozumiem instrukcji.
- Procedura FormCreate chyba przejmuje uchwyt okna?
- Nie mam zielonego pojęcia co robi i po co jest procedura OnAppIdle.