OpenVG и WebGL
Существует ли реализация JavaScript стандарта OpenVG на основе WebGL?
Я прекрасно знаю, что мы можем отображать векторную графику в браузере, мне просто любопытно, удалось ли кому-нибудь на самом деле отобразить SVG с помощью WebGL, основываясь на этом стандарте OpenVG или без него. Если его не существует, было бы полезно начать проект?
3 ответа
Ну, ни один из этих ответов не дает четкого ответа на вопрос. @tom показывает, что да, мы можем визуализировать векторную графику на холсте webgl, используя аккуратную трафаретную уловку. Однако это не полная реализация спецификации OpenVG, и мне любопытно, сколько из спецификации OpenVG может быть реализовано таким образом. Итак, сделаем вывод:
В настоящее время нет реализаций, но особого спроса на них нет.
Вот некоторый C-код для разбора и рендеринга SVG в OpenGL 1.x: https://github.com/tnovelli/vsprite. Это может быть не совсем то, что вы ищете. Мы использовали трюк Stencil Buffer для рисования 2D полигонов. Для 3D, я думаю, вам придется рендерить в внеэкранный буфер и накладывать текстуру на 3D-объект. (Почему бы не сделать рендеринг SVG в растровые изображения? Потому что наши объекты разрушаемы и деформируемы.)
Я думаю о портировании этого на Javascript+WebGL. Функции синтаксического анализа XML/SVG/CSS в браузере должны устранить большую часть работы, но уловка трафарета может стать проблемой. Для меня это задний план, так что если кто-то хочет что-то попробовать, не задерживайте дыхание, просто сделайте это!:)
Поскольку WebGL прекрасно сочетается с любой другой техникой HTML(5), вы уже можете смешивать ее. Единственное, что вы не сможете смешивать SVG с WebGL, используя его буфер глубины - например, логотип (SVG), размещенный в 3D-мире (WebGL). Но, может быть, это именно то, что вам нравится делать?