{Hint: save all files to location: /home/handoko/Desktop/GLES_Rectangle/LamwGUIProject1/jni }
unit unit1;
{$mode delphi}
interface
uses
Classes, SysUtils, AndroidWidget, Laz_And_Controls, seekbar,
Laz_And_GLESv2_Canvas;
type
{ TAndroidModule1 }
TAndroidModule1 = class(jForm)
jCanvasES2_1: jCanvasES2;
jSeekBar1: jSeekBar;
jTextView1: jTextView;
procedure AndroidModule1JNIPrompt(Sender: TObject);
procedure jCanvasES2_1GLCreate(Sender: TObject);
procedure jCanvasES2_1GLDraw(Sender: TObject);
procedure jSeekBar1ProgressChanged(Sender: TObject; progress: integer;
fromUser: boolean);
private
{private declarations}
public
{public declarations}
end;
var
AndroidModule1: TAndroidModule1;
implementation
{$R *.lfm}
{ TAndroidModule1 }
procedure TAndroidModule1.AndroidModule1JNIPrompt(Sender: TObject);
begin
jCanvasES2_1.Screen_Setup(jCanvasES2_1.Width, jCanvasES2_1.Height, xp2D);
jCanvasES2_1.Refresh;
end;
procedure TAndroidModule1.jCanvasES2_1GLCreate(Sender: TObject);
begin
jCanvasES2_1.Shader_Compile('simon_Vert', 'simon_Frag');
jCanvasES2_1.Shader_Link;
end;
procedure TAndroidModule1.jCanvasES2_1GLDraw(Sender: TObject);
var
XYs : TXYs;
Size : Single;
begin
jCanvasES2_1.MVP:= cID4x4;
jCanvasES2_1.SetMVP(jCanvasES2_1.MVP);
// Clear screen
XYs.Cnt := 4;
XYs.Pt[0] := _XY(-1, -1);
XYs.Pt[1] := _XY(-1, 1);
XYs.Pt[2] := _XY( 1, 1);
XYs.Pt[3] := _XY( 1, -1);
jCanvasES2_1.DrawPolyFill(XYs, 0, _RGBA(0, 0, 0, 1), _RGBA(0, 0, 0, 1), 0);
// Draw the rectangle
Size := jSeekBar1.Progress/100;
XYs.Pt[0] := _XY(-Size, -Size);
XYs.Pt[1] := _XY(-Size, Size);
XYs.Pt[2] := _XY( Size, Size);
XYs.Pt[3] := _XY( Size, -Size);
jCanvasES2_1.DrawPolyFill(XYs, 0, _RGBA(0.5, 1, 0.8, 1), _RGBA(0, 0, 0, 1), 0);
end;
procedure TAndroidModule1.jSeekBar1ProgressChanged(Sender: TObject;
progress: integer; fromUser: boolean);
begin
jCanvasES2_1.Refresh;
end;
end.