Glm :: Perspektive Erklärung
Ich versuche zu verstehen, was der folgende code macht:
glm::mat4 Projection = glm::perspective(35.0f, 1.0f, 0.1f, 100.0f);
Schafft es ein Projektions-matrix? Clips aus alles, was nicht in der Ansicht des Benutzers?
Ich war nicht in der Lage, alles zu finden auf der API-Seite, und das einzige, was ich finden konnte in der pdf auf Ihrer website:
gluPerspective:
glm::mat4 perspective(float fovy, float aspect, float zNear,
float zFar);
glm::dmat4 perspective(
double fovy, double aspect, double zNear,
double zFar);
From GLM_GTC_matrix_transform extension: <glm/gtc/matrix_transform.hpp>
Aber es erklärt nicht die Parameter. Vielleicht habe ich etwas verpasst.
InformationsquelleAutor der Frage Trt Trt | 2011-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es erzeugt eine Projektions-matrix, d.h. die matrix, die beschreibt, den Satz von linearen Gleichungen, Transformationen von Vektoren aus dem Auge Raum in clip-space. Matrizen sind wirklich keine schwarze Magie. Im Fall von OpenGL, die Sie passieren, um ein 4-by-4-Anordnung von zahlen:
Können Sie multply ein 4-Vektor durch eine 4×4 matrix:
Nach erreichen der clip-space (d.h. nach der Projektion Schritt), die primitive sind abgeschnitten. Die Eckpunkte, die aus der Beschneidung sind dann in der Perspektive teilen, d.h.
Und das ist es. Es gibt wirklich nichts mehr Los, in alle diese Transformations-Schritte als normale matrix-Vektor-Multiplikation.
Nun die kühle Sache über dieses ist, dass die Matrizen können verwendet werden, um zu beschreiben, die die relative Ausrichtung eines Koordinatensystems in ein anderes Koordinatensystem. Was die Perspektive der Transformation wird ist, dass Sie lassen Sie uns die Eckpunkte z-Werte "schlüpfen" in Ihre projizierten w-Werte. Und durch die Perspektive teilen eine nicht-Einheit w führen wird "Verzerrung" der vertex-Koordinaten. Eckpunkte mit kleinen z aufgeteilt werden durch ein kleines B, also Ihre Koordinaten "blow" up", während die Knoten mit großen z "gequetscht" werden, das ist, was verursacht die perspektivische Wirkung.
InformationsquelleAutor der Antwort datenwolf
Dies ist eine c-standalone-version der gleichen Funktion. Das ist in etwa eine Kopie paste-version von das original.
InformationsquelleAutor der Antwort Moebius