Масштабировать инвариантные объекты в webgl
WebGl не поддерживает толщину линий. Поэтому, когда мне нужно выделить какую-то линию, я просто рисую вокруг нее прямоугольник. Но когда я масштабирую сцену, это выглядит довольно страшно.
Есть два способа, которые я вижу сейчас:
1) Пересчитайте ширину прямоугольника в соответствии с canvas.width в координаты модели.
2) Поместите все объекты, инвариантные к масштабированию, в отдельную матрицу (я использую scenejs) и пересчитайте их позиции после каждого колеса мыши
Мне не нравятся оба этих решения. Поэтому я задаюсь вопросом: есть ли хороший обходной путь, чтобы сделать масштабирование объектов инвариантным?
1 ответ
Другим способом (хотя и не самым эффективным) может быть использование шейдеров. В нашем приложении WebGL мы рендерим подсвеченные примитивы в текстуру, а затем размываем их на экране, чтобы добавить "эффект свечения выделения".