почему матрица проекции должна быть двойной? - PullRequest
2 голосов
/ 07 октября 2011

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

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

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

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

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

1 голос
/ 07 октября 2011

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

...