Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TButtons im OpenGl (@Aya) (https://www.delphipraxis.net/8134-tbuttons-im-opengl-%40aya.html)

Matze 29. Aug 2003 10:21


TButtons im OpenGl (@Aya)
 
Hi!

Ich habe Aya's OpenGl-Kurs absolviert. ;)

Da wird ja die Form zur Laufzeit erzeugt. Wie kann ich eine Form1 nehmen, die Auch in Delophi sichtbar ist. Mr_T's Tut habe ich mir durchgeschaut, aber ich möchte das ohne Timer machen, Aya hat's ja auch ohne Timer hinbekommen. :mrgreen:

Für Hilfe wäre ich dankbar, aber bitte nicht solche Kommentare wie: "Mach es mit Threads!"
Das kann ich nämlich nicht! :(

Luckie 29. Aug 2003 12:19

Re: TButtons im OpenGl (@Aya)
 
Zitat:

Mach es mit Threads.
:mrgreen:

Aya wird wohl für einen Monat, wenn du Pech hast nicht online sein.

Darty 29. Aug 2003 12:22

Re: TButtons im OpenGl (@Aya)
 
Es gibt noch den Mr_T :) Der ist auch gut in OpenGL :)

Aya ist im Umzug Stress ..

Matze 29. Aug 2003 12:23

Re: TButtons im OpenGl (@Aya)
 
Danke Luckie. Danke M.Knebel.

Mr_T! Hilf mir bitte.

:mrgreen:

Daniel B 29. Aug 2003 12:39

Re: TButtons im OpenGl (@Aya)
 
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. ;)

Matze 29. Aug 2003 13:21

Re: TButtons im OpenGl (@Aya)
 
Hi Daniel!!

Das ist nett, dass du mir hilfst, aber ich bekomme das nicht gebacken! Dann kommen so ein paar Fehlermeldungen. :shock:

Weil ich jetzt eine Unit1 und einen Project1-Reiter habe, erkennt die Unit1 die ganzen Funktionen wie DrawScene, ... nicht. :cry:

Könntest du hier bitte die Unit als Attachment anhängen oder sie mir als pn schicken. Das wäre echt super. ;)

Daniel B 29. Aug 2003 13:23

Re: TButtons im OpenGl (@Aya)
 
Huhu,

^^

Matze 29. Aug 2003 18:58

Re: TButtons im OpenGl (@Aya)
 
Vielan Dank Daniel!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz