Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: GLScene auch bei MouseEvents rendern.

  Alt 21. Aug 2006, 11:14
Hi,
ein TGLCadencer ist eigentlich nur ein Thread mit sehr geringer Priorität. Deswegen wirst du mit dem Rendern auch kein Glück haben, solange du das gleich in Behandlung des Mausereignis machst. Da kommen dann einfach recht viele Events, die total vorrangig bearbeitet werden.
Lager einfach mal alles in das Ereignis des Cadencers aus:

Delphi-Quellcode:

procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
  begin
    newX := X;
    newY := Y;
  end; // if ssLeft in Shift
end;

procedure doFoo;
begin
  glsceneviewer1.Camera.RotateAbsolute(newY-startpos.Y, newX-startpos.X, 0);
  startpos.X := newX;
  startpos.Y := newY;
  mouse.cursorpos := glsceneviewer1.clienttoscreen(Point(Width div 2, Height div 2));
end;

procedure TGLCadencer.On(weißleider nicht genau und hab's gerade nicht installiert);
begin
// natürlich auch ein flag verwenden, dass der hier nur rein geht wenn die Maus gedrückt wurde!
if (newX <> startPos.X) or (newY <> startPos.Y) then
begin
doFoo;
end; // if (newX <> startPos.X) or (newY <> startPos.Y)

// ....
end;
Gruß Der Unwissende
  Mit Zitat antworten Zitat