2D векторная графика для OpenGL [дубликат]


На этот вопрос уже есть ответ здесь:

Я хочу использовать векторную графику в игре OpenGL. Я хочу использовать векторную графику, потому что ее можно масштабировать дешево без потери качества.

Конечно, чертеж должен быть аппаратно ускорен, поэтому я не хочу рисовать в программное обеспечение к текстуре.

Теперь мне интересно, существует ли библиотека, делающая это. Есть ли библиотека, которая может загрузить какой-то векторный графический формат и отобразить его с помощью OpenGL?

3 7

3 ответа:

Я бы не стал заморачиваться ни с чем OpenVG, даже с MonkVG, который, вероятно, является самой современной, хотя и неполной реализацией. Комитет OpenVG свернул свою деятельность в 2011 году, и большинство, если не все реализации, являются устаревшим программным обеспечением или в лучшем случае устаревшим программным обеспечением.

Начиная с 2011 года, самым современным является ребенок Марка Килгарда, NV_path_rendering, который в настоящее время является только расширением поставщика (Nvidia), как вы уже могли догадаться из его названия. Есть много материалов на тему: это:

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. Интересно, не так ли это необходимо: может быть, рисование линий уже достаточно ускорено на большинстве видеокарты систем.