• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

OpenGL: Herausfinden, welches Objekt mit Maus angeklickt ???

jack2000

Newbie
Hallo
Ich habe z.B. 5 Würfel in meiner Szene gezeichnet.
Jetzt soll bei einem Klick auf einen der Würfel jeweils irgendwas anderes gemacht werden.
Da ich meine Szene auch drehen kann, geht es mit der Auswahl über bestimmte Pixel-Positionen schonmal nicht.
Wie kriege ich es hin (wenn es geht einfach) das man, egal wo sich die Würfel befinden, der richtige ausgewählt wird, wenn ich draufklicke.

Falls jemand ein Lösung hat, wäre ich ziemlich froh drüber, wenn er den entsprechenden Code hier listen könnte und auch mit dem Hinweis, an welche Stelle des Programms er hingehört (z.B. main oder dispalyfunktion ??).
Wenn ich mir so manche Erklärungen z.B. über das Picking durchlese, verstehe ich leider nicht unbedingt viel.
Bin nämlich nicht gerade das Genie beim OpenGL-Programmieren. :?: :?:
 

TeXpert

Guru
nö für Code gibts google. --> die OpenGL-FAQ sollte Dir helfen.

Stichwort ist: picking

das Prinzip einfach: beim rendern werden den Objekten IDs zugeordnet und im selectionMode gerendert, dann kannst Du die Primitive erfassen.
 

SchodMC

Newbie
Schau mal bei http://www.delphigl.com vorbei. Ist ein super OpenGL Forum (hat auch ein Spizen Wiki zum Thema OpenGL). Zwar arbeiten die mit Delphi, aber da es um OpenGL geht macht das keinen großen Unterschied. Es hat auch den ein oder anderen C/C++ Entwickler da (z.B. ich ;)).

Es könnte sogar sein, das es für "Selection & Picking" ein Tutorial gibt.
 

TeXpert

Guru
jengelh schrieb:
Man trackt die Mausposition selbst innerhalb seiner GL-Anwendung, und weiß somit, wo im Feld sie ist. Siehe z.B. asteroids3D.

dann musst Du die Berechnungen alle selber machen (zbuffer bei überlappenden Dingern etc) OGL bringt das entsprechend mit, d.h. render-Mode einstellen und Du bekommst das Primitiv geschenkt
 

SchodMC

Newbie
Du kannst in OpenGL das von mir erwähnte "Picking & Selecting" verwenden. Das bedeutes, Du schaltest in einen bestimmten Render Modus, gibst jedem Objekt das angeklickt werden soll eine Nummer und erhällst die Nummer des angeklickten Objektes von OGL zurück. Ansich ganz einfache Sache und mann muss nicht ewig rumrechnen. Nachzulesen unter http://wiki.delphigl.com/index.php/Tutorial_Selection.
 
Oben