Registriert: Mi Aug 20, 2003 09:15 Beiträge: 70 Wohnort: Italien
Ich habe folgendes Problem:
Ich möchte in meinem Prog Maussteuerung einbauen bzw. muss es.
Dazu kann ich die Mauskoordinaten am Bildschirm herausfinden, aber das nützt mir nicht viel, da ich 3D verwende...
Nun, kann man mit OpenGl herausfinden, auf welchen Pixel (x,y), eine Koordinate(x,y,z) gerendert wird, damit man das mit der Maus vergleichen kann?
Wenn nein, wie kann man sonst herausfinden, wo die Maus hinzeigt?
Und kann ich (und wie) herausfinden, ob die Maustaste gedrückt wird, oder nicht?
Ich benutze zur Zeit nicht VCL für meine Programme, wäre das besser / schlechter / einfacher / komplizierter?
P.S.: Wo gibt es eine gute (deutsche) dokumentation über (alle) OpenGL Funktionen?
_________________ "Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
tyr hat geschrieben:
Nun, kann man mit OpenGl herausfinden, auf welchen Pixel (x,y), eine Koordinate(x,y,z) gerendert wird, damit man das mit der Maus vergleichen kann?
Ja, das kann man.Dazu gibt es die Funktion gluUnProject.Dazu musst du aber vorher noch via glReadPixels den Z-Wert an der Mausposition auslesen (Format = GL_DEPTH) und diesen Wert dann auch an gluUnProject übergeben.
tyr hat geschrieben:
Und kann ich (und wie) herausfinden, ob die Maustaste gedrückt wird, oder nicht?
Ja, kann man.Da du in deinem nächsten Satz sagst das du die API nutzt, musst du in deiner Ereignisschleife auf die Nachricht WM_MBUTTONDOWN reagieren (nähere Infos dazu gibts in der mit Delphi kommenden WindowsSDK-Hilfe).
tyr hat geschrieben:
Ich benutze zur Zeit nicht VCL für meine Programme, wäre das besser / schlechter / einfacher / komplizierter?
VCL ist besonders im Bezug auf das Abfangen von Nachrichten und das Erstellen von Komponenten wie z.B. Timern sehr einfacher, da die VCL ja zur RAD erdacht wurde (Rapid Application Developement).Anstatt also z.B. alle Ereignisse eines Buttons abfangen zu müssen, geht das mittels VCL ganz einfach über die Delphi-IDE.VCL ist also sehr viel einfacher (im Bezug auf Komponenten) als pure API, und besonders fürs Prototyping sehr zu empfehlen.
tyr hat geschrieben:
P.S.: Wo gibt es eine gute (deutsche) dokumentation über (alle) OpenGL Funktionen?
Eine deutsche Doku ist mir leider nicht bekannt, aber auf den glManPages von 3DLabs findest du die Funktionsbeschreibungen aller OpenGL-Befehle auf englisch (allerdings exklusive wgl und glu).
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das was du da machst nennt sich Selection(Buffer), und das hat eigentlich fast jeder von uns schonmal gemacht (ich hab dazu sogar ein ganzes Tutorial auf meiner HP verfasst).Allerdings nutzt man Selektion nicht zur Maussteuerung, sondern eher zum Auswählen von Objekten mittels der Maus, es sei denn du verstehst unter Maussteuerung was anderes als der Rest von uns.
Und die Sache mit der "begrenzten" Anzahl an Objekten ist auch nicht korrekt.Diese Zahl gibt nämlich nur an, wie viele Objekte gleichzeitig getroffen werden können, und da sind 128 recht viel (d.h. im Endeffekt das 128 Objekte direkt hintereinander liegen können und dann bei der Seletkion im Selektionsbuffer abgelegt werden).Die Anzahl der Objekte die du auf den Namestack legen kannst ist allerdings (fast) unbegrenzt.
Registriert: Mi Aug 20, 2003 09:15 Beiträge: 70 Wohnort: Italien
Im Prinzip ist das eigentlich das, was ich gebraucht habe, ich wusste nur nicht, dass es auch so einfach geht. Ich wollte nämlich die Mauspos. in 3D umrechnen, und dann mit meinen Vertexen vergleichen...
und natürlich meine ich mit Maussteuerung, das Steuern des Programms mit der Maus und in meinem Fall müssen bestimmte Objekte anlickbar sein. Und wenn man "beliebig" viele dieser Selection-buffer anlegen kann, dann passt mir das um so besser....
P.S. Ich kann mir beim besten Willen nicht vorstellen, was man noch unter Maussteuerung verstehen könnte...
_________________ "Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
tyr hat geschrieben:
P.S. Ich kann mir beim besten Willen nicht vorstellen, was man noch unter Maussteuerung verstehen könnte...
Unter Maussteuerung versteht man (so zumindest ich) eher sowas wie die Maussteuerung bei einem Ego-Shooter, wo man mit der Maus seinen Blickwinkel verändern kann.
Das was du jetzt mit dem Selektionsbuffer machst nennt sich dann auch eher Mausauswahl, da du ja mit deiner Maus Objekte auswählen willst (in deinem Fall Vertex).
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.