@SergeySerge11

Почему текстуры в floating point адресуются?

Найти не могу почему так сделано, конкретно почему? Даже объяснения нету. просто удобно, кому удобно? Это же очевидное замедление в 10 раз в самом критически важном месте в конце критического пути.
Зачем делать дополнительную работу, при вычислении адреса (int)(width*sX)+(int)(height*sY)*width, если можно просто x+y*width вычислять адрес, а еще просто найти итератор?
Там же вообще какой инваринт.
Типа где--то в начале я делю sX=x/width. Что бы потом обратно умножить x=sX*width, зачем, когда ничего не происходит между этими операциями, все преобразования делаются только с вершинными координатами, и этого точно хватает.
А там все не просто так, и все в сторону ускорения? В чем может быть ускорение?
И зачем вообще нормализировать значения, если можно нормализовать в любой момент если надо, типа в структуре текстуры же хранится ее Высота ширина там, а значения текстурных координат заранее вычислены, тогда зачем их хранить в вещественных числах, если можно в целых, или допустим при запуске, пересчитывать, если там размеры текстур меняются.
  • Вопрос задан
  • 30 просмотров
Пригласить эксперта
Ответы на вопрос 1
@youngMaster
Так сложилось по историческим причинам и для удобства использования.
1) Раньше текстуры имели размеры только кратные степени двойки, потому перевод из флоат в целые был простейшей операцией ничуть не медленнее чем целочисленные вычисления.
2) Раньше и очень долго не было прямого доступа к реальному размеру текстуры, потому нормализованное значение давало удобство доступа через относительные координаты, т.е. ты мог менять размеры текстур на лету не меняя остальной код что давало прирост производительности, т.к. для отрисовки объекта в далеке ты мог использовать маленькие текстуры и меняя их размер в автоматическом режиме увеличивая их размер при приближении.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы