Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.09.2006, 15:36

OpenGL : Courser zeichnen

Hallo!
Ich fange gerade an mich ein bisschen in OpenGL ein zu studieren.
Ich hab da mal ne frage:
Ich habe die x und y koordinaten von der Maus.(z.B. x=200; y=150)
Die muss ich jetzt aber auf 3D koordinaten (x,y,-6.0) "umrechnen".
z achse bleibt immer gleich. ;)
Könnte mir dabei einer helfen?
Gruß Flo

EDIT: Möchte dann natürlich einen Mausverfolger machen ;)

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

08.09.2006, 17:03

Erst mal: Ich hab keine Ahnung von OpenGL, in der Hoffnung dass sich da nicht viel von DX unterscheidet:
Du sagst, die z-Achse bleibt immer gleich.. Das hiesse hast du eine orthogonale Projektion und KEINERLEI Rotation der Kamera, oder der Szene. Mit andern Worten ein 2D oder 2.5D Spiel. In dem Fall reicht es doch einfach die X,Y Koordinaten einzusetzen, bzw den bereich umwandeln (X = mausX * scale + offset) und das wars.

An sonsten musst du wie folgt vorgehen: Eine Gerade bestimmen die sekrecht zur Sicht-ebene steht und durch den Punkt geht den der Mauszeiger 'auf dieser Ebene' beschreibt. Das genau Verfahren koennen dir andere Leute hier aber viel besser erklaeren ;)
"Have you tried turning it off and on again?"

3

08.09.2006, 19:03

geht in opengl ziemlich einfach, sowas zu machen:

switcht in 2d:
gluOrtho2D(0,width,0,height);

wobei width und height deine fenstergröße ist (die sichtbare!)
und dann deaktivierste den depthtest:
glDisable(GL_DEPTH_TEST);

dann malste dein viereck mit dem cursor drauf mit:
glVertex2d(100, 500); blablabla

und dann halt wieder die sicht zurückstelln...

ps: weiß net, ob das alles war, ich bin nich sicher, ob man da den viewport neu initialisieren muss...prpbiers einfach aus

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

4

08.09.2006, 19:53

Proportionen! Darüber lässts sichs ausrechnen...
Coursur?-ehr Cursor... ;) oder?

5

09.09.2006, 20:15

Zitat von »"WarMuuh!!"«

geht in opengl ziemlich einfach, sowas zu machen:

switcht in 2d:
gluOrtho2D(0,width,0,height);

wobei width und height deine fenstergröße ist (die sichtbare!)
und dann deaktivierste den depthtest:
glDisable(GL_DEPTH_TEST);

dann malste dein viereck mit dem cursor drauf mit:
glVertex2d(100, 500); blablabla

und dann halt wieder die sicht zurückstelln...

ps: weiß net, ob das alles war, ich bin nich sicher, ob man da den viewport neu initialisieren muss...prpbiers einfach aus

Könntest du evt mal ein Beipiel geben?
Bei mir deformiert sich der courser immer und ist nicht gerade das ware.
ich habe einen POINT courser der regelmäßig erneuert wird.
Wie sähe das dann aus?
Gruß Flo

6

12.09.2006, 10:43

hier ma n beispiel, aber da ichs nicht getestet hab, übernehm ich keine haftung :)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45,(float)width / (float)height, 0.1, 200);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
draw3DScene();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,width,0,height);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBind(GL_TEXTURE_2D, deineCursorTextur);
//mal n viereck mit glVertex2d(---,---);


aber wie gesagt, nicht ausprobiert...aber so ungefäh sollte es funktionieren...

edit: aso, noch vergessen: du musst beim zeichnen des cursors den depthtest ausschalten: glDisable(GL_DEPTH_TEST); oder sowas..

Werbeanzeige