Mauskoordinaten in OpenGL
-
Hi!
Ich will ein Programm schreiben, mit dem ich Strichgrafiken realisieren kann.
Also im Grunde will ich nur Linien zeichnen. Nur das Problem ist, dass ich erst einmal die Mauskoordinaten herausfinden muss.
Ich wäre um jeden Ratschlag dankbar.
-
naja mit ogl kommt ja keine input schnittstelle, also muss man z.b Windows dafuer hernehmen, psdk.
Ich baue meine ogl classe immer so, das sie die maus coordinaten immer von 0.0-1.0 normiert erwartet werden. So fuetter ich dann z.B von WM_MOUSE .... : ogl->InputAction((float)MouseX/(float)ClientX, ... )
Also man normiert die mousekoordinaten aufs fenster, dann ist da schon mal unabhaengig.in ogl hangt die koordinate dann nur noch von der Matrix ab. Muss man dann noch x*OglXaufloesungGLORTHO rechnen, wenn man orthogonal ist.
(oft benutzt man ja mehere verschiede projetions matizen in einen render durchgang)cheers
-
Also danke mal für deine schnelle Antwort.

Also man normiert die mousekoordinaten aufs fenster, dann ist da schon mal unabhaengig.
Also du verstehst unter normieren, das teilen der Koordinaten durch einen gewissen Wert? Und wenn ja, woher weiß ich, wie groß dieser Wert sein muss?
-
so gross wie das fenster physicalisch ist, in pixel.
Grund: z.B windows gibt dir die mausposition in pixel relativ zur client area. So, Ogl ist das alles scheiss egal. Ogl hat einen Viewport, wie gross der ist und wo der ist interessiert nicht.
Im Code bereich von Ogl will ich nur wissen wo die maus auf der Ogl flaeche ist, aber da ogl nicht in pixel rechnet will ich das in z.B %, also von 0-1, 0 waere z.B dann ganz rechts (wenn wir von x achse sprechen, eins 1 links, 0.5 in der mitte. So auch fuer Y. (man anders skalieren, je nach dem wie man will)
Natuerlich kann man alles im OGl bereich errechnen, wenn man da die Windows koordinaten und die client area aufloesung weitergibt. Ich trenn das aber lieber, da der OGl code ja transportabel sein soll. Damit ist egal mit welchem inputcodewerk ich arbeite, es muss immer so skaliert werden.
Am ende kann man das machen wie man will.Mur muss man verstehen OGL kennt keine Pixel (naja zumindest nicht in dem bezug)
Wenn man die Mausposition in Pixel kennt, muss man noch die abmasse des Fensters(bzw client area) in pixel kennen und deine OGL projections matrix (und evetuell viewport flache, falls nicht die ganze verwendet wurde)
damit kann man dann dort wo man hinklickt mit ogl einen punkt,linie oder was auch immer dort malen ...
hoffe das war jetzt klar genung.
-
Vielen dank, jetzt ist mir klar was du meinst
