Ich musste eine manuelle Perspektive Division auf etwas anderes als gl_Position, wenn ich bemerkte, meine Ergebnisse waren aus, so habe ich einige Experimente gemacht.Manuelle Perspektive Division
Ich habe bemerkt, dass, wenn ich es die Standard-Transformation verwenden lassen, ist die resultierende Tiefenwert (gl_Position.z) korrekt ist:
void main()
{
gl_Position = MVP *vertexPosition;
}
jedoch beim Versuch, die Perspektive Teilung manuell zu tun, der Tiefenwert ist nicht die gleiche, auch wenn es gleichwertig sein soll (?):
void main()
{
gl_Position = MVP *vertexPosition;
gl_Position.xyz /= gl_Position.w;
gl_Position.w = 1.0;
}
So funktioniert die Perspektive Teilung funktioniert anders in Vulkan? Wenn das so ist, wie?
Der Tiefenbereich für das Ansichtsfenster ist auf [0,1] eingestellt, falls dies Auswirkungen hat.
klingt ein bisschen wie der Unterschied zwischen Perspektive korrekte Interpolation und Screenspace-Interpolation. Das wäre in opengl gleich –
Definiere "ist nicht gleich". Versuchen Sie, einen Gleitkommavergleich zwischen den beiden Fällen durchzuführen? –