почему матрица проекции должна быть двойной?

Вот проблема: у меня есть матрица ModelViewProjection(MVP), которая состоит из умножения ModelView на Projection; Я сделал несколько функций, которые делают то же самое, что и glOrtho и gluPerspective, чтобы избавиться от функции стека устаревания OpenGL. Мои функции возвращают двойные значения. Мои шейдеры используют modelviewprojection как float. Есть ли необходимость в работе с двойными для перспективных матриц, потому что в конечном итоге они становятся плавающими в MVP? матрицы состоят из float[16] или double[16]; Если в двойном значении нет заметных преимуществ, то я экономлю некоторые ресурсы процессора на преобразовании матрицы проекции в двойное значение, чтобы плавать где-то, прежде чем попасть в шейдеры.


person Palax    schedule 07.10.2011    source источник


Ответы (2)


Вы можете придерживаться float.

Типичное оборудование класса DX10/GL3.x (например, мой Geforce 9800GT) вообще не поддерживает математику с плавающей запятой двойной точности. Более ранние карты ATI класса DX9 даже не поддерживали должным образом математику с плавающей запятой одинарной точности на аппаратном уровне (если я правильно помню, они поддерживали что-то вроде fp24 или около того).

Тем не менее, на любой такой карте проекция работает просто отлично во всех отношениях. Что показывает, что дополнительная точность в данном случае действительно не нужна.

person Damon    schedule 07.10.2011

Вы можете использовать любой из них или оба, по соображениям производительности люди обычно просто используют числа с плавающей запятой для обработки графики.

person cmannett85    schedule 07.10.2011