Ich verstehe, dass die Kamera in OpenGL definiert ist, in der negativen Z-Richtung zu suchen. So in einem einfachen Beispiel, ich stelle mir vor, dass für meine Ecken gemacht werden, müssen sie auf die folgende ähnlich definiert werden:OpenGL: Muss eine Ecke Z-Koordinate negativ sein oder nicht?
rawverts = {
0.0f, 0.0f, -1.0f,
0.0f, 0.5f, -1.0f,
0.5f, 0.0f, -1.0f,
};
jedoch absolut keinen Führer mir die Antwort sagen wird. Überall, wo ich hinschaue, wird das Beispiel "Hello triangle" mit der z-Koordinate links bei 0 gemacht, und immer wenn ein komplexeres Netz definiert wird, werden die Koordinaten nicht einmal angezeigt. Ich habe immer noch keine Ahnung von den möglichen Werten der Koordinaten, damit sie auf den Bildschirm gezeichnet werden können. Nehmen Sie zum Beispiel, glm :: Perspektive:
glm::mat4 projectionMatrix = glm::perspective(
FoV, // The horizontal Field of View, in degrees : the amount of "zoom". Think "camera lens". Usually between 90° (extra wide) and 30° (quite zoomed in)
4.0f/3.0f, // Aspect Ratio. Depends on the size of your window. Notice that 4/3 == 800/600 == 1280/960, sounds familiar ?
0.1f, // Near clipping plane. Keep as big as possible, or you'll get precision issues.
100.0f // Far clipping plane. Keep as little as possible.
);
Aber wie können die Abschneideebene mit irgendwelchen positiven Werten definiert werden? Die Kamera zeigt auf die -Z-Richtung! Außerdem, wenn ich nahe/ferne Schnittebenen bei, sagen wir, -1 und -4 erzeuge, macht dies jetzt jede Z-Koordinate ungültig, die mehr als -1 oder weniger als -4 ist. Oder sind die rohen z-Koordinaten immer nur zwischen 0 und -1 gültig (wieder können sicher z-Koordinaten grundsätzlich nicht positiv sein?) ..?
Aber nehmen wir an, dass was tatsächlich passiert, ist, dass OpenGL (oder Glm) die Clipping-Ebene Werte und negiert sie negiert. Also, meine -1 bis -4 wird 1 bis 4. Bedeutet dies jetzt ungültig Z-Koordinate, die weniger als 1 und mehr als 4 ist, warum 0.0f, 0.0f, -1.0f
wird nicht auf dem Bildschirm gezeichnet werden?
In diesem Stadium würde ich behandeln behandeln eine Antwort als einfach ein Zeiger auf ein Buch oder etwas Material, das Informationen zu diesem Thema hat.
Nah und Fern ist immer definiert als Entfernung zur Kamera, nicht als bestimmte Punkte im Raum. Andernfalls wären die Clipping-Ebenen beim Bewegen der Kamera überall. Es passiert einfach, dass die Kamera standardmäßig nach -z schaut. – weltensturm