Чи є там хороша міжплатформна бібліотека векторної графіки C ++? [зачинено]


9

Я роблю гру і хочу використовувати векторну графіку. Я почав перекодувати його за допомогою Каїра, і продуктивність вражає. Отже, я шукаю іншу бібліотеку. Це повинно бути для C ++ та кросплатформних (наприклад, немає Direct2D). Є ще одне запитання, яке хтось задавав раніше, але відповіді не було. Має бути щось ...?


"Питання, задане раніше", ви маєте на увазі gamedev.stackexchange.com/questions/4788/… ?
Тетрад

@Tetrad: Попереднє запитання неявно виключає мульти платформу, оскільки явно запитує рішення для Windows. І відповіді, схоже, вказують лише на рішення, пов’язані з Windows.
Койот

2
@Zach Hinchy: Коли ви кажете крос-платформу, ви маєте на увазі, що саме? Windows, Linux, OS X? Або ви включаєте портативні платформи iOS, Brew, Android?
Койот

2
"Має бути щось ...?" Чому? Векторна графіка взагалі - це не те, що роблять люди, яким потрібно 30 + fps. Чи завантажує ваш веб-браузер сторінки зі швидкістю 30 кадрів в секунду? Ні. 10 кадрів в секунду - це багато. Якщо ви використовуєте векторну графіку, це тому, що ви цінуєте якість над продуктивністю. Таким чином, бібліотеки векторної графіки цінують якість за продуктивністю. Сам Каїр не повільний, але це якісний векторний графічний рендер. А ця якість означає, що вона не вирізає кути для продуктивності.
Нікол Болас

1
@iamcreasy: Існує велика різниця між просто намалюванням квадратиків більшим / меншим та бібліотекою векторної графіки. Візуалізація ігор за допомогою GPU; вони не використовують бібліотеку векторної графіки. Вони не використовують Каїр, АнтиГрейн або що-небудь з цих натур.
Нікол Болас

Відповіді:


21

Я побоююсь, що тема є досить хитрою, здається, що декілька мультиплатформних рішень запустили, а ще менше, здається, вижили самостійно. Я розглядав цю тему кілька місяців тому. У мене виникло обмеження, оскільки мені потрібен був двигун для роботи на iOS та Android. Тоді не знайшов нічого, що мені справді підходило.

Але кілька покажчиків від того, що я пам’ятаю: кожна система GUI має певну форму API малювання. Таким чином, ви можете знайти щось цікаве в тих, які є крос-платформою, як QT .

Еквівалент Каїру був би AntiGrain. Ви можете порівняти продуктивність.

OpenFrameworks має підтримку векторної графіки.

ImageMagick - це дуже велика бібліотека, яка має деяку підтримку векторної графіки - і мову, присвячену їй .

Нижній рівень ви знайдете Libxmi та Libart з проекту gnome.

Не високий рівень API - і я не впевнений, які шанси йому підійдуть - але є стандарт OpenVG . Існує декілька портів OpenVG над рендерами програм OpenGL та OpenGL ES. Mesa 3D також, здається, має реалізацію OpenVG. Але для деяких платформ будуть доступні лише комерційні рішення.

Існують способи більш високого рівня бібліотек, які інтегрують API для векторної графіки. Серед них є відкрите джерело один названі Перешкоди для графічного дизайну і використовується в серйозному ігровому дизайні є Scaleform (НЕ Open Source). Цей ігровий движок має деякі функції малювання векторної графіки: 2DEngine


EDIT : безладність, мабуть, використовує Каїр.


3

MonkVG - це крос-платформна емуляція OpenVG поверх версій OpenGL ES 1.1 та 2.0. Дивіться: https://github.com/micahpearlman/MonkVG

Примітка. Я є оригінальним автором та підтримувачем цієї бібліотеки. Він має дуже ліберальну ліцензію BSD.


Це чудовий внесок у питання, але це належним чином зазначити, коли ви рекламуєте щось, з чим ви пов’язані (наприклад, свій власний обліковий запис github).
Сет Беттін

-1

Я в кінцевому підсумку не заважав і просто збирався із зображеннями з високою роздільною здатністю та масштабуванням з OpenGL. Це працює досить добре для моєї ситуації.


4
Ви запитували про бібліотеку, але прийняли відповідь там, де вона написана, просто виберіть навпаки (ігноруючи той факт, що ваша відповідь). Це не гарне судження. (також ігноруючи той факт, що @Coyoto, можливо, знадобилося близько 15 хвилин, щоб написати свою відповідь). Гарного дня!
Куазі Ірфан

1
це близько 3 років занадто пізно, але нещодавно було подано ще одну відповідь, і я отримав повідомлення, тож я нарешті це побачив. Я пішов вперед і не прийняв свою і прийняв @ Coyote's. Вибачте з цього приводу, я тоді не дуже зрозумів StackOverflow. краще, ніж ніколи, сподіваюся, - сподіваємось, це допоможе людям, які бачать питання в майбутньому.
Зак Гінчі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.