Мне нужно было выполнить ручное разделение перспективы на что-то другое, кроме gl_Position, когда я заметил, что мои результаты отключены, поэтому я сделал несколько экспериментов.Ручное разделение перспективы
Я заметил, что если я позволю это использовать преобразование по умолчанию, полученное значение глубины (gl_Position.z) правильно:
void main()
{
gl_Position = MVP *vertexPosition;
}
Однако при попытке сделать перспективное деление вручную, значение глубина не же, несмотря на то, что должно быть эквивалентно (?):
void main()
{
gl_Position = MVP *vertexPosition;
gl_Position.xyz /= gl_Position.w;
gl_Position.w = 1.0;
}
Таким образом, делает разделение труда перспектива по-разному в Vulkan? Если да, то как?
Диапазон глубины для окна просмотра установлен на [0,1], если это имеет какое-либо влияние на это.
немного напоминает разницу между правильной интерполяцией перспективы и интерполяцией пространства. Это будет то же самое в opengl –
Определить «не то же самое». Вы пытаетесь сделать сравнение с плавающей точкой между двумя случаями? –