2D векторная графика для OpenGL [дубликат]
На этот вопрос уже есть ответ здесь:
Я хочу использовать векторную графику в игре OpenGL. Я хочу использовать векторную графику, потому что ее можно масштабировать дешево без потери качества.
Конечно, чертеж должен быть аппаратно ускорен, поэтому я не хочу рисовать в программное обеспечение к текстуре.
Теперь мне интересно, существует ли библиотека, делающая это. Есть ли библиотека, которая может загрузить какой-то векторный графический формат и отобразить его с помощью OpenGL?
3 ответа:
Я бы не стал заморачиваться ни с чем OpenVG, даже с MonkVG, который, вероятно, является самой современной, хотя и неполной реализацией. Комитет OpenVG свернул свою деятельность в 2011 году, и большинство, если не все реализации, являются устаревшим программным обеспечением или в лучшем случае устаревшим программным обеспечением.
Начиная с 2011 года, самым современным является ребенок Марка Килгарда, NV_path_rendering, который в настоящее время является только расширением поставщика (Nvidia), как вы уже могли догадаться из его названия. Есть много материалов на тему: это:
- https://developer.nvidia.com/nv-path-rendering NVIDIA hub, но некоторые материалы на целевой странице не самые современные
- http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/opengl/gpupathrender.pdf Siggraph 2012 paper
- http://on-demand.gputechconf.com/gtc/2014/presentations/S4810-accelerating-vector-graphics-mobile-web.pdf GTC 2014 презентация
- http://www.opengl.org/registry/specs/NV/path_rendering.txt официальное расширение doc
NV_path_rendering теперь используется библиотекой Skia Google за кулисами, когда она доступна. (Nvidia представила код в конце 2013 и 2014 годов.)
И чтобы ответить на более конкретный вопрос, поднятый в комментариях, вы можете смешать рендеринг пути с другими материалами OpenGL (3D), как показано ниже at:
Вы, конечно, можете загрузить SVGs и такие https://www.youtube.com/watch?v=bCrohG6PJQE . они также поддерживают синтаксис PostScript для путей.
Выскочкой, имеющим еще меньшую (или совершенно отсутствующую) поддержку поставщиков или академический блеск, являетсяNanoVG , который в настоящее время разрабатывается и поддерживается. (https://github.com/memononen/nanovg ) учитывая количество 2D-библиотек в OpenGL, которые пришли и ушли с течением времени, вы делаете большую ставку, используя что-то, что не поддерживается крупным поставщиком, по моему скромному мнению.
Взгляните на OpenVG.
Много дискуссий в этом посте Slashdot о рендерах для SVG. Я не знаю, кто из них использует OpenGL, если таковые имеются.
Этот вопрос SO также имеет несколько предложений, в том числе sauvage, который выполняется на Python. Каир также, по-видимому, возможен.
Есть несколько мощных библиотек, которые отображают SVG Без OpenGL. Интересно, не так ли это необходимо: может быть, рисование линий уже достаточно ускорено на большинстве видеокарты систем.