Entwickler-Ecke

Multimedia / Grafik - OpenGL als "Image-Fenster"


Adrian - Mi 04.06.03 19:04
Titel: OpenGL als "Image-Fenster"
Hallo,

Ayas OpenGL-Tutorial hat mich auf den Geschmack gebracht. Aber was ich noch nicht kapiert und gefunden habe:
Kann man die Animation so wie ein Image auf dem Formular plazieren?
Ich stelle mir das so vor, daß neben dem GL-Fenster diverse Steuerelemente platziere, mit denen ich die Bewegungen steuern kann. Der "Vollbildmous" ist nicht so ganz das, was mir vorschwebt.

Gruß,

Adrian


Phobeus - Do 05.06.03 14:45

http://www.phobeus.de/hosting/dgl/forum/index.php?act=ST&f=9&t=846&s=604e902c203dec346371fb47738e60b6
Da findest Du wie Du in OpenGL "2D" zeichnest. Steuerelemente kannst genauso gut die von Windows verwenden, ansonstne mußt Du eben die Position abfragen. Statt einem Fenster könntest Du z.b. ne Handle angeben.

Ceyas,
Phobeus


Adrian - Do 05.06.03 15:17

Hallo Phoebus!

Erst mal Danke für die Antwort.
Jetzt sehe ich auch, daß man meine Frage leicht mißverstehen kann, also werde ich versuchen, sie neu zu stellen.
Im vorliegenden Fall ist es so, daß ich eine 3D-Anwedung geschrieben habe, die auch recht annehmbar funktioniert. Die Steuerung übernehme ich zur Zeit mit den Pfeil-Tasten, und das will ich ändern. Dazu stelle ich mir das so vor, daß ich in einem normalen Formular ein paar Steuerflächen lege, die mir erlauben, den Betrachtungsstandpunkt und die Objektbewegung zu verändern - Schieberegler schweben mir vor. Allerdings wird ja das Programmfenster komplett vom OpenGL eingenommen. Jetzt könnte ich natürlich ein zweites Formular mit den Steuerelementen aufmachen, aber lieber wäre es mir, wenn im Form1 sowohl die OpenGL-Ausgabe, als auch die Regelelemente zu sehen wären.
Geht das überhaupt? In den Tutorials, die ich mir angeschaut habe, war das leider nie der Fall.

Gruß,

Adrian


Phobeus - Do 05.06.03 15:41

Bitte ... Phobeus, kommt von der Phobie und nicht dem Fötus ;D

Ok, nun habe ich dich verstanden. Ich darf hier ja keine Werbung machen und verweise wieder nur einmal darauf, dass einige Leute bei sich um Profile nützeliche Seiten haben, die unter anderen in den Downloads ein Template für zwei Views-Ports in einem Fenster haben. Wenn Du Dir den Code ansiehst, solltest Du recht schnell auf die Idee kommen, den zweiten Viewport zu entfernen und dann dort lieber einige Steuerelemente reinzubacken. Alles klar ;)


Pascal - Do 05.06.03 15:44

In verschiedenen Tutorials ist bereits

Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
  glViewport(0,0,newWidth,newHeight);

end;
eingebunden.
stattdessen einfach
glViewport(0,0,newWidth-200,newHeight); oder ähnliches einfügen.


Adrian - Fr 06.06.03 08:36

@Phobeus
Da habe ich mal wieder nicht richtig hingeschaut. Ich dachte allerdings nicht an Fötus, sondern an Phoebus (auch Phöbus oder Phoibus) "der Strahlende", was ein Beinamen Apolls ist.
Der Tipp mit 2 Viewports scheint in die richtige Richtung zu gehen, ich werde mich mal ein wenig damit befassen.

@Pascal
Deinen Code baue ich gleich mal ein.

Danke an beide!

Gruß,

Adrian


Raphael O. - Fr 06.06.03 23:29

ich denke du meinst was anderes...
man kann seine Szene auch in ein Panel zeichnen, womit dann das erreicht wird, was du willst... (falls ich das richtig verstanden habe ;) )
dazu musst du bei den Handles nur immer Panel1.handle anstatt Form1.canvas.handle übergeben...