Зачем мне нужен фактор при использовании gl.polygonOffset? - PullRequest
0 голосов
/ 28 мая 2018

Я не понимаю, как polygonOffset работает с WebGL.Я часто экспериментирую с аргументами factor и units.

Я думаю, что я получил более последовательные результаты с:

gl_Position.z += someEpsilon;

Я знаю, что производная упоминается в документации, и она, кажется, ведет себя по-разному в зависимости от углатреугольник.

Почему я не могу просто каким-то образом увеличить значение глубины на некоторое количество единиц, при этом единица измерения является наименьшим числом, которое может содержать буфер глубины?

1 Ответ

0 голосов
/ 28 мая 2018

Почему я не могу просто каким-то образом увеличить значение глубины на некоторое количество единиц, при этом единица измерения является наименьшим числом, которое может содержать буфер глубины?

Ну, вы можете.В соответствии с уравнением (3.8) спецификации OpenGL ES 2.0, раздел 3.5.2 «Смещение глубины», стр. 59 , применяемое смещение многоугольника o равно:

o = m ∗ factor + r ∗ units

где

Минимальная разрешаемая разница r является константой, зависящей от реализации.Это наименьшее различие в значениях координат окна z, которые гарантированно будут оставаться различимыми при растеризации полигонов и в буфере глубины.

Поэтому, если вы хотите, чтобы o был постоянным, просто установите factor до нуля, и используйте некоторое подходящее значение для units, то есть 1,0.

...