Высокопроизводительные решения для векторной графики [закрыто]

12

Я ищу высокопроизводительную библиотеку векторной графики, которую я могу использовать в своих играх.

Я думаю о линиях векторной графики, например, о тех, которые можно сделать с помощью SVG .

Я рассмотрю любой язык на данный момент (но должен работать на Windows). Было бы замечательно решение, использующее преимущества аппаратного обеспечения графического процессора.

Заранее спасибо.

CiscoIPPhone
источник
Есть ли причина, по которой вы хотите использовать векторную графику?
AttackingHobo
Да: мне нравится стиль, они могут сжимать лучше, чем текстуры, и они более гибкие для анимации.
CiscoIPPhone

Ответы:

7

Если Windows (Vista и выше) является единственной платформой, вам стоит обратить внимание на Direct2D , который обеспечивает ускоренную рендеринг двухмерной векторной графики с графическим процессором и программный запасной вариант. Для более x-платформенного решения загляните в Cairo , который, как мне кажется, имеет растеризатор с GPU-ускорением.

Бокий
источник
Интересно, что я никогда не слышал о Direct2D раньше. Кажется, он не очень широко используется - возможно, из-за того, что это только Windows 7.
CiscoIPPhone
Это только Vista и Windows 7, благодаря использованию Direct3D 10. И это довольно новое :)
boki
2
Обратите внимание, что некоторые высококлассные игровые программисты считают Direct2D ужасным - braid-game.com/news/?p=455 (который также ссылается на подкаст) и braid-game.com/news/?p=466 .
Я думаю, что с управляемой оболочкой для Direct2D гораздо проще работать, чем с собственной библиотекой. И в большинстве критических замечаний, которые я читал о Direct2D, приводились примеры, когда те же цели можно достичь относительно легко в Direct3D. Конечно, рисовать прямоугольник излишне, но он хорошо работает для кривых и фигур с нетривиальным текстурированием и / или штриховкой. Кроме того, D2D не был нацелен в первую очередь на разработчиков игр - он был призван предоставить более богатую и производительную альтернативу GDI. Но он хорошо взаимодействует с Direct3D.
Майк Штробель
3

OpenVG - это стандарт для аппаратно ускоренной векторной графики. Он поддерживается графическими процессорами, предназначенными для портативных устройств, таких как Mali / PowerVR / Vivante. Qt и Cairo могут использовать OpenVG в качестве рендеринга. Существуют программные библиотеки, которые реализуют OpenVG с использованием оборудования OpenGL (MonkVG, AmanithVG GLE) или только программного обеспечения (AmanithVG SRE, ShivaVG, AlexVG).


источник
2

Scaleform GFx - это коммерческая промежуточная библиотека для интеграции фильмов Adobe Flash (оптимизированный рендеринг, ActionScript и т. Д.) В ваш движок.

В прошлой жизни кодовой базой Scaleform GFx была GameSWF . GameSWF является открытым исходным кодом.

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

Единственное, что я могу упомянуть, что это относится к подходу, основанному на Flash, - это тот факт, что Adobe выпустила исходный код для своей виртуальной машины ActionScript, которая теперь живет в проекте Tamarin в Mozilla.

Neverender
источник
1

Если вы используете Windows XP или хотите что-то, что работает в большинстве версий Windows, вы должны проверить DirectDraw (даже если он немного старый) или GDI + , или вы можете использовать Flash, который кажется довольно хорошим для векторного рендеринга, и это кросс-платформенный

dotminic
источник
DirectDraw уже давно устарел, и, насколько я знаю, у него нет собственных возможностей для рендеринга векторной графики. Насколько я помню, он полностью опирался на текстуры и блиттинг. Я считаю, что GDI + не ускоряется и GDI, хотя и ускоряется, довольно примитивно. Было бы лучше использовать библиотеку типа Cairo, которая поддерживает несколько рендеров, по крайней мере, одна из которых поддерживает рендеринг с GPU-ускорением. Direct2D, вероятно, лучший выбор для Vista и 7.
Майк Штробель
Мой плохой, я думал, что GDI + был ускорен! Я думаю, Direct2D был бы лучшим выбором тогда, как вы говорите.
dotminic
1

Здесь и там обсуждается, как использовать SVG-графику в игровом движке XNA. Один здесь: http://wam-games.com/2010/04/svg-in-xna/ и вот пост на этом самом сайте: Рендеринг SVG-искусства прямо в XNA

Насколько я понимаю, XNA транслирует практически все через Direct3D, так что все это ускоряется на GPU. Вы должны в основном программировать на C #, чтобы использовать его (вы можете использовать другие языки, но вы должны взломать его). Использование XNA дает вам уверенность в Windows, но также в возможности переноса на XBox360 и пару портативных платформ.

CodexArcanum
источник