Also ich bin ein totaler Dummy was OpenGl anbelangt und habe ein Problem... Ich arbeite zur Zeit mit D2009 und der neuesten version von DGLSDK.
Ich habe mir ein Test-Formular wie in Lektion 1 zusammengebastelt um mir ein Dreieck zu zeichnen.
Folgender Code hab ich in Create-methode des Hauptformulars:
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Der Grund warum du bei deinem Code nichts siehst liegt daran, dass du alles im OnCreate hast. Wärend OnCreate aufgerufen wird ist das Formular noch nicht sichtbar. Alles was du dann darauf zeichnest wird beim Sichtbarmachen den Formulars wieder übermalt. Entsprechend musst du dafür sorgen, dass das was gezeichnet werden soll in regelmäßigen Abständen gezeichnet wird. Entweder a) in einem festen zeitlichen Intervall (Timer oder Application.OnIdle) oder aber b) jedes Mal, wenn dein Formular neu gezeichnet werden muss (Form.OnPaint). Welches die beste Lösung ist hängt davon ab was du machen möchtest.
Also auf deinen Code bezogen.
Das CreateRederingContext / ActivateRenderingContext sollte nur ein einziges mal Aufgerufen werden. Also OnCreate ode OnShow des Formulars ist da schon ganz passen.
Das Einstellen deines Viewports bzw der Perspective könntest du auch direkt nach dem Initialisieren erledigen. Sofern sich dein Fenster von der Größe her verändern darf solltest du glViewport eventuell auch zu Begin des Rendern setzen. Damit der Viewport immer passend groß ist. Ich persönlich mache so etwas auch gerne im OnResize des Formulars. Dann wird es nicht unnötig aufgerufen. Aber das wird eventuell jetzt etwas zu verwirrend.
Das Wechseln in die Modelview Matrix sollte dann der Anfang deines Rendercodes sein. Also das wird dann in einem Timer, OnIdle oder OnPaint aufgerufen. Nach dem Wechseln in die Modelview Matrix solltest du diese aber zurücksetzen (glLoadIdentity). Zu mindest zum Anfang der Szene. Sonst addieren sich deine Verschiebungen bei jedem Bild.
Wenn du dann alles gezeichnet hast, dann musst du auch SwapBuffer aufrufen. Sonst wird dein Backbuffer niemals mit dem Frontbuffer ausgetauscht und dein Bild wird niemals zu sehen sein.
Alternativ zu meiner Beschreibung kannst du dir auch mal in der Filesection unter "Templates" ganz unten das "OpenGL 1.5 Template (VCL)" anschauen. Dort sollte das soweit schon alles richtig sein. + ein paar anderer nützlicher Sachen.
Mitglieder in diesem Forum: Bing [Bot] und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.