Я использую поплавки для указания координат текстуры в диапазоне 0-1.OpenGL любит вещи в этом диапазоне, и я хорошо задаю координаты таким образом, но меня беспокоит, когда я начинаю использовать большие текстуры (скажем, до 4096 или 8192 пикселей), что я могу начать терять точность.Например, если я хочу указать координату (1,1) в текстуре 8192x8192px, это будет соответствовать 1/8192=0.0001220703125
.Похоже, это оценивается как 0.000122070313
как число с плавающей точкой ... Я обеспокоен тем, что мой шейдер OpenGL не будет отображать тот же пиксель, который я намеревался.какое-то время, но рано или поздно мне придется конвертировать его (возможно, уже в самом шейдере).Есть ли обходной путь для этого, или это то, о чем я должен даже беспокоиться?
Умножая его обратно, я получаю 1.000000004096
, который, я думаю, все равно будет интерпретироваться как 1
?На самом деле, OpenGL делает смешивание, если это не целое число, не так ли?Возможно, не с «ближайшим соседом», а с «линейным»:
1/4096f * 4096 = 1, error = 0
1/8192f * 8192 = 1.000000004096, error = 0.000000004096
1/16384f * 16384 = 1.0000000008192, error = 0.0000000008192
1/32768f * 32768 = 0.9999999991808, error = 0.0000000008192
...
1/1048576f * 1048576 = 0.9999999827968, error = 0.0000000172032
(я использую отладчик Visual Studio для вычисления числа с плавающей запятой и затем умножаю его обратно с помощью калькулятора)
Является ли урок здесь, что ошибка незначительна для любой текстуры разумного размера?