มีไลบรารีกราฟิกเวกเตอร์ C ++ ข้ามแพลตฟอร์มที่ดีหรือไม่ [ปิด]


9

ฉันกำลังสร้างเกมและต้องการใช้กราฟิกแบบเวกเตอร์ ฉันเริ่มเขียนโค้ดอีกครั้งโดยใช้ไคโรและการแสดงนั้นยอดเยี่ยมมาก ฉันกำลังมองหาห้องสมุดที่แตกต่าง มันต้องเป็น C ++ และข้ามแพลตฟอร์ม (เช่นไม่มี Direct2D) มีอีกคำถามที่มีคนถามมาก่อนหน้านี้ แต่ไม่มีคำตอบที่เหมาะสม จะต้องมีบางอย่าง ... ?


"คำถามที่ถามก่อน" คุณหมายถึงgamedev.stackexchange.com/questions/4788/หรือไม่?
Tetrad

@Tetrad: คำถามก่อนหน้านี้เป็นการยกเว้นหลายแพลตฟอร์มโดยปริยายเมื่อร้องขอโซลูชันสำหรับ Windows อย่างชัดเจน และคำตอบดูเหมือนจะชี้ไปที่โซลูชันที่เกี่ยวข้องกับ Windows เท่านั้น
โคโยตี้

2
@ Zach Hinchy: เมื่อคุณพูดข้ามแพลตฟอร์มคุณหมายถึงอะไรกันแน่? Windows, Linux, OS X หรือไม่ หรือคุณรวมแพลตฟอร์มมือถือ iOS, Brew, Android?
โคโยตี้

2
"จะต้องมีบางอย่าง ... ?" ทำไม? โดยทั่วไปแล้วเวกเตอร์กราฟิกไม่ใช่สิ่งที่คนที่ต้องการ 30+ fps เว็บเบราว์เซอร์ของคุณโหลดหน้าเว็บที่ 30fps หรือไม่ เลข 10fps นั้นมีมากมาย หากคุณใช้กราฟิกแบบเวกเตอร์นั่นเป็นเพราะคุณให้ความสำคัญกับคุณภาพมากกว่าประสิทธิภาพ ดังนั้นไลบรารีกราฟิกแบบเวกเตอร์จึงให้คุณค่ากับประสิทธิภาพมากกว่า กรุงไคโรเองนั้นไม่ได้ช้านัก แต่เป็นตัวเรนเดอร์กราฟิกเวกเตอร์คุณภาพ และคุณภาพนั้นหมายความว่ามันไม่ได้ตัดมุมเพื่อประสิทธิภาพ
Nicol Bolas

1
@iamcreasy: มีความแตกต่างใหญ่ระหว่างเพียงแค่การวาดรูปสี่เหลี่ยมใหญ่ / เล็กและไลบรารีกราฟิกแบบเวกเตอร์ เกมแสดงผลด้วย GPU; พวกเขาไม่ได้ใช้ไลบรารีกราฟิกแบบเวกเตอร์ พวกเขาไม่ได้ใช้ไคโรหรือ AntiGrain หรือลักษณะใด ๆ เหล่านั้น
Nicol Bolas

คำตอบ:


21

ฉันกลัวว่าตัวแบบจะค่อนข้างยุ่งยากมีหลายแพลตฟอร์มที่เปิดตัวโซลูชั่นและดูเหมือนว่าจะมีชีวิตรอดด้วยตัวเองน้อยลง ไม่กี่เดือนที่ผ่านมา ฉันมีข้อ จำกัด เนื่องจากฉันต้องการให้เอ็นจิ้นทำงานบน iOS และ Android ไม่พบสิ่งที่เหมาะกับฉันในขณะนั้น

แต่สิ่งที่ฉันจำได้ไม่กี่ข้อ: ระบบ GUI แต่ละอันมีรูปแบบการวาด API ดังนั้นคุณอาจพบสิ่งที่น่าสนใจภายในคนที่ข้ามแพลตฟอร์มเช่นQT

ไคโรเทียบเท่ากับAntiGrainคุณอาจต้องการเปรียบเทียบประสิทธิภาพ

OpenFrameworksรองรับกราฟิกแบบเวกเตอร์

ห้องสมุดที่ใหญ่มากซึ่งมีบางส่วนเวกเตอร์การสนับสนุนกราฟิก - และภาษาที่ทุ่มเทให้กับมัน - คือImageMagick

ระดับที่ต่ำกว่าคุณจะพบLibxmiและLibartจากโปรเจกต์ gnome

ไม่ได้เป็นระดับ API สูง - และฉันไม่แน่ใจว่ามีการต่อรองมันจะเหมาะกับคุณ - แต่มีเป็นมาตรฐานOpenVG มีหลายพอร์ตของ OpenVG ผ่านซอฟต์แวร์ตัวแสดง OpenGL และ OpenGL ES Mesa 3D ก็ดูเหมือนว่าจะมีการใช้งาน OpenVG แต่สำหรับบางแพลตฟอร์มจะมีเพียงโซลูชันเชิงพาณิชย์เท่านั้น

มีวิธีไลบรารีระดับสูงที่รวม API สำหรับกราฟิกแบบเวกเตอร์ กลุ่มคนเหล่านี้มีโอเพ่นซอร์สหนึ่งชื่อClutterสำหรับการออกแบบ GUI และใช้ในการออกแบบเกมที่จริงจังมีขนาด (ไม่เปิดแหล่งที่มา) เอ็นจิ้นเกมนี้มีฟังก์ชั่นบางอย่างในการวาดกราฟิกแบบเวกเตอร์: 2DEngine


แก้ไข : ความยุ่งเหยิงใช้ไคโรอย่างเห็นได้ชัด


3

MonkVG เป็นแบบจำลองข้ามแพลตฟอร์ม OpenVG ที่ด้านบนของ OpenGL ES 1.1 และ 2.0 ดู: https://github.com/micahpearlman/MonkVG

หมายเหตุ: ฉันเป็นผู้แต่งดั้งเดิมและเป็นผู้ดูแลห้องสมุดนี้ มันมีใบอนุญาต BSD ที่เสรีมาก


นี่เป็นคำถามที่ดี แต่ควรสังเกตว่าเมื่อคุณกำลังโปรโมตบางอย่างที่คุณเป็นพันธมิตร (เช่นบัญชี GitHub ของคุณเอง)
เซทแบททิน

-1

ฉันลงเอยด้วยการไม่รบกวนและไปกับภาพความละเอียดสูงและปรับขนาดด้วย OpenGL มันทำงานได้ดีพอสำหรับสถานการณ์ของฉัน


4
คุณถามเกี่ยวกับห้องสมุด แต่ยอมรับคำตอบที่มันบอกเพียงเลือกวิธีอื่น ๆ (ไม่สนใจข้อเท็จจริงที่ว่ามันเป็นคำตอบของคุณ) มันไม่ได้เป็นการตัดสินใจที่ดี (ไม่สนใจความจริงที่ว่า @ โคโยโต้ใช้เวลาประมาณ 15 นาทีในการเขียนคำตอบของเขา) ขอให้มีความสุขมาก ๆ ในวันนี้!
Quazi Irfan

1
นี่มันช้าไปประมาณ 3 ปี แต่มีคำตอบอื่นที่ส่งมาเมื่อเร็ว ๆ นี้และฉันได้รับการแจ้งเตือนดังนั้นในที่สุดฉันก็เห็นสิ่งนี้ ฉันไปข้างหน้าและไม่ยอมรับของฉันและยอมรับ @ Coyote's ฉันขอโทษด้วยที่ฉันไม่เข้าใจ StackOverflow ในตอนนั้น ดีกว่าไม่สายฉันหวังว่าหวังว่ามันจะช่วยให้คนที่เห็นคำถามในอนาคต
Zach Hinchy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.