- implementation
- uses UglContext;
- {$R *.dfm}
- procedure TForm1.FormShow(Sender: TObject);
- begin
- CreateGLContext(Handle);
- Model:=T3DModel.Create;
- Model.LoadFromFile('planet.3DS');
- // glEnable(GL_LIGHTING); // Verdrehte Funktion?
- // glEnable(GL_POSITION); // Verdrehte Funktion?
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- Model.Free;
- DestroyGLContext;
- end;
- procedure TForm1.FormResize(Sender: TObject);
- begin
- ResizeGL(Width, Height);
- end;
- procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
- var Done: Boolean);
- begin
- Done:=False;
- Render;
- end;
- procedure TForm1.Render;
- begin
- ClearGL;
- ResetModelView;
- // ********************************** NEW NEW **********************************
- glRotatef(Ax, 1, 0, 0);
- glRotatef(-Ay, 0, 1, 0);
- // ********************************** END NEW **********************************
- Model.Draw;
- SwapGL;
- end;
- // ********************************** NEW NEW **********************************
- // When mouse is down, captures mouse position
- procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- Mx:=X; // captures new positions ...
- My:=Y; // ... for next call to MouseMove event
- end;
- procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- begin
- if ssLeft in Shift then // when mouse moves with left button ....
- begin
- Ax := Ax + (Y-My)/2; // ... calculate rotation for X ....
- Ay := Ay + (X-Mx)/2; // ... and Y
- Mx:=X; // and captures new positions ...
- My:=Y; // ... for next call to MouseMove event
- end;
- end;
- // ********************************** END NEW **********************************
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- gluPerspective(strtoint(edit1.Text), ClientWidth/ClientHeight, 1, 1000);
- edit1.Text := inttostr(strtoint(edit1.Text) +1);
- end;
- end.