Seite 1 von 1

Re: SDL-Koordinaten umrechnen

Verfasst: 25.08.2011, 00:01
von joggel
HA... das weiß ich:
Nun ja...
Also, wenn Du eine Auflösung von, sagen wir mal, 800x600 hast, dann erstrecken sich die 800, in X-Richtung, von (-1) bis (+1). Und auf Y-Seite (+1) bis (-1).
Also immer um einen Betrag von 2!
(-1) => (+1) == 2 (X-Richtung)
(+1) => (-1) == 2 (Y-Richtung)

Angenommen Du möchtest dun herausbekommen, wo im OGL-KO-System sich der Punkt (200,100) befindet:
simple Verhältnisgleichung:
800/2 = 200/x ==> 2/800 = x/200;
x = 2*200/800;
x = 400/800 = 0.5;

das saleb für Y:
600/2 = 100/y ==> 2/600 = y/100;
y = 2*100/600;
y = 200/600 = 0.333;

Da oben Links im GL-KO-System ja (-1,1) ist, einfach die neuen Werte dazu addieren.
für X:
-1 + 0.5 = -0.5;
für Y:
1 + 0.33 = 1.33;

Sooo... ich hoffe mein Taschenrechner hat keine Fehler gemacht.

Re: SDL-Koordinaten umrechnen

Verfasst: 25.08.2011, 00:07
von Youka
Mir stellt sich erstmal die Frage, ob du eine perspektivische oder orthogonale Sicht nutzt.
Im Falle von orthog. Sicht kannst du die Projektionsmatrix auch einfach mit glOrtho auf dein Fenster anpassen.
Yeti hat geschrieben:Auch der SDL-Punkt 640|480 entspricht dem OpenGL-Punkt -1|-1.
Meintest sicher 1|-1, nicht?

Re: SDL-Koordinaten umrechnen

Verfasst: 27.08.2011, 20:14
von Youka
Yeti hat geschrieben:Aber wie meinst du das, dass ich mit glOrtho meine Sicht einfach anpassen kann?
Du solltest dich erstmal mit dem Matrix-System von OpenGL beschäftigen.
Vertices, die du angibst, werden nämlich, bevor die Pixel berechnet und alles in die Buffer geschickt wird, erst mit der Modelviewmatrix, dann mit der Projectionmatrix multipliziert. Dies erlaubt dir u.a. Transformationen, wie Rotation, Translation oder Skalierung, was du empfehlenswerterweise in der Modelviewmatrix definieren solltest, oder auch in einem anderen Koordinatengitter zu arbeiten, dass du in der Projectionmatrix definieren solltest, über Funktionen, wie glOrtho, gluPerspective oder gluOrtho2D.

Re: SDL-Koordinaten umrechnen

Verfasst: 27.08.2011, 20:29
von TGGC
Ist doch alles nur eine Frage der Projektionsmatrix, und schon ist bei OGL da Koordinatensystem gleich.