Warum glTranslatef? Warum nicht einfach ändern Sie den rendering-co-ords?

Mache ich ein einfaches Pacman-Spiel in C++ mithilfe von OpenGL und SDL. Ich wollte mit der glTranslatef Funktion, aber es schien einfacher, nur nach änderungen der co-ords, dass die zeichnen-Funktion verwendet. Ich Frage mich, warum möchten Sie/sollten Sie glTranslatef?

Hier ein kurzes Beispiel für beide glTranslatef und einfach die änderung der co-ords

glPushMatrix()
glTranslatef(10,0,0)
draw()
glPopMatrix()

oder

//Assuming the draw function took co-ords
draw(x+10 ,y ,z)

Meine einzige Vermutung ist, dass Sie effektiv die gleichen, es ist die alleinige Präferenz. Können Sie mich aufklären?

BEARBEITEN

Bitte beachten Sie, dass ich spreche hier nur über die translate-Funktion. Alles über die Skalierung und das drehen ist irrelevant, ich Rede NUR über übersetzungen. (Dies ist, weil die übersetzungen sind einfach ohne die glTranslatef Funktion, wo die anderen beiden sind komplexer, ohne Ihre Funktionen)

Sie sind sich bewusst, dass der Aufruf von glTranslate, glRotate und glScale alter der maxtrix-stack, während nur ein offset Hinzugefügt, um einige Koordinate nicht?
Ja, aber ich hatte nicht gedacht, dass. So sind Sie darauf hinzuweisen, dass durch die Veränderung der aktuellen matrix, Sie können verschieben/drehen/skalieren ALLES gezogen, matrix, richtig?
Alles, das Sie zeichnen, ist es mehrfach durch den madelview matrix, so dass nach dem verschieben/drehen/skalieren ruft alles, was gezeichnet ist, ist betroffen von diesen Transformationen. Sie können einen Blick auf diese: glprogramming.com/red/chapter03.html#name2
Genau, das vereinfachen würde, verschieben/drehen/skalieren viele Objekte. Danke für den Hinweis, Jungs.

InformationsquelleAutor Matthew Reynolds | 2013-08-30

Schreibe einen Kommentar