OpenGL Problem

04/11/2012 16:10 Lazeboy#1
Hallo epvp,
ich versuche mich zur zeit mit Grafikprogrammierung in C++ auseinander zusetzen und hab mich fürs erste für opengl entschieden. Ich stoße doch auf ein Problem was ich finde in keinem von mir gefundenen Tutorial richtig erklärt wird.
Ich habe verstanden das die koordinate sozusagen der Uhrsprung (0|0) in opengl genau die Mitte ist. Die positiven werte auf der X-Achse führen nach rechts und die negativen nach links. Bei der Y-Achse führt positiv nach oben negativ nach unten. Also ich gehe jetzt nur von 2D aus.
Mein Problem entsteht jetzt allerdings bei Befehlen wie diesen.
Code:
glScalef(1.0f, 1.0f, 1.0f);
Diese Funktion soll in meinem Fall das bild skalieren. Mit den Parametern wird ein bild erstellt was das komplette fenster abdeckt. Eigentlich bin ich es gewohnt int Werte also Pixel zu übergeben. Wenn man als Prameter z.b 0.5f übergibt hat man ein bild was genau die Hälfte des Fensters entspricht. Das selbe Problem entsteht wenn ich die Position des Bildes verändern möchte.
Code:
glTranslatef(0.0, 0.0,1.0);
Kann mir vielleicht jemand erklären wie ich damit genau arbeiten kann. Also das ich mein bild auch genau an den Pixel bekomme wo ich es haben möchte XD.
mfg Lazeboy
04/11/2012 16:20 ef784fH/FAE7#2
Hallo,

erst glTranslatef(); und danach glScalef(); verwenden.

Wenn du zum Beispiel glScalef(0.5, 0.5, 0.5); als erstes anwendest,
musst du nun (wenn du normalerweise glTranslatef(10, 10, 10); ... im alten ... anwenden würdest,)
stattdessen glTranslatef(5, 5, 5); anwenden.

Nun verstanden?
04/11/2012 18:05 Lazeboy#3
Quote:
Originally Posted by ef784fH/FAE7 View Post
Hallo,

erst glTranslatef(); und danach glScalef(); verwenden.

Wenn du zum Beispiel glScalef(0.5, 0.5, 0.5); als erstes anwendest,
musst du nun (wenn du normalerweise glTranslatef(10, 10, 10); ... im alten ... anwenden würdest,)
stattdessen glTranslatef(5, 5, 5); anwenden.

Nun verstanden?

ja schon kla aber wie kann ich denn mein bild z.b auf den pixel 384 x 200 bekommen. Es gibt ja nur float korrdinaten anstatt pixel. Ich möchte ja nicht immer (384/width) x (200/height) rechnen das ist doch total beschissen.
04/11/2012 18:13 xNopex#4
Quote:
Ich möchte ja nicht immer (384/width) x (200/height) rechnen das ist doch total beschissen.
Dann nimm eine abstraktere Grafikengine und heul nicht rum. Musst dich halt umgewöhnen.