Einzelnen Beitrag anzeigen

Daniel B
(Gast)

n/a Beiträge
 
#5

Re: TButtons im OpenGl (@Aya)

  Alt 29. Aug 2003, 12:39
Hi Matze,

ich habe Ayas Tutorials zuerst auch als VCL-Version gemacht und es ging genau so gut, Aya hat es dann im IRC NonVCL gemacht, ansonsten ändert sich für Dich nicht viel.

1. Neue Anwendung erstellen.
2. Bei den Komponenten auf den Reiter "Zusätzlich", dort gibt es die Komponente "ApplicationEvents", blauer Kreis, eine Fackel drin uns drei schwarze Pfeile.

Von der AppEvents-Kompo brauchst Du das Ereigniss OnIdle, das sieht dann so aus:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
  DrawScene;
  Done := False;
end;
Was sich noch ändert, in der DrawScene kommt die letzte Zeile noch rein, bei NonVCL ist die nämlich woanders drin.
Delphi-Quellcode:
procedure TForm1.DrawScene;
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  glLoadIdentity;

  glTranslate(0, 0, -5);
  glRotate(RotateX, 1, 0, 0);
  glBegin(GL_QUADS);
.
.
.
  glEnd;

  RotateX := RotateX + 1;
  if RotateX > 360 then
    RotateX := RotateX - 360;
  SwapBuffers(h_DC); //<-- Übeltäter...
end;
Ins normale FormCreate kommt noch das rein:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  InitOpenGL;
  h_DC := GetDC(Handle);
  SetDCPixelFormat(h_DC);
  hRC := wglCreateContext(h_DC);
  wglMakeCurrent(h_DC,hRC);
  InitGL;
end;
Das müsste es gewesen sein, die IniGL und SetDCPixels... bleiben gleich, fällt mir jetzt auf die schnell jedenfalls kein Untershcied ein. Egl, probier das einfach mal aus, wenns nicht geht, sag bescheid, dann häng ich dann die Unit ganz an, so wie es bei mir auch mal gelaufen ist und noch läuft hoff ich.
  Mit Zitat antworten Zitat