123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- program sdl_test;
- {$APPTYPE gui}
- uses
- Forms, GLScene, GLSDLContext, GLSDL, GLTeapot, SysUtils
- {$IFDEF FPC}, Interfaces{$ENDIF};
- type
- TMySDLViewer = class (TGLSDLViewer)
- procedure EventPollDone(Sender : TObject);
- end;
- procedure TMySDLViewer.EventPollDone(Sender : TObject);
- begin
- Render;
- end;
- var
- sdlViewer : TMySDLViewer;
- scene : TGLScene;
- camera : TGLCamera;
- teapot : TGLTeapot;
- light : TGLLightSource;
- begin
- Application.Initialize;
- scene:=TGLScene.Create(nil);
- teapot:=TGLTeapot(scene.Objects.AddNewChild(TGLTeapot));
- light:=TGLLightSource(scene.Objects.AddNewChild(TGLLightSource));
- light.Position.SetPoint(10, 15, 20);
- camera:=TGLCamera(scene.Objects.AddNewChild(TGLCamera));
- camera.TargetObject:=teapot;
- camera.SceneScale:=4;
- camera.Position.SetPoint(4, 2, 1);
- sdlViewer:=TMySDLViewer.Create(nil);
- sdlViewer.Camera:=camera;
- sdlViewer.OnEventPollDone:=sdlViewer.EventPollDone;
- sdlViewer.Render;
- while sdlViewer.Active do begin
- // Message queue is not operational, but there may still be some messages
- Forms.Application.ProcessMessages;
- // Relinquish some of that CPU time
- SDL_Delay(1);
- // Slowly rotate the teapot
- teapot.TurnAngle:=4*Frac(Now*24)*3600;
- end;
- sdlViewer.Free;
-
- scene.Free;
- end.
|