GUI ที่ดีสำหรับ OpenGL? [ปิด]


65

ฉันเริ่มที่จะเรียนรู้ OpenGL ด้วย FreeGLUT โดยใช้สุดยอดและความรู้ที่ฉันมีจากกราฟิกระดับต้นของฉันเพื่อทำความเข้าใจทักษะของฉัน

หากต้องการได้รับเพิ่มเติมจากประสบการณ์นี้ฉันต้องการรวม GUI เพื่อเขียนทับ FreeGLUT ที่ใช้ตอนนี้คำถามของฉันคือ: สิ่งนี้เป็นไปได้และห้องสมุดใดที่ฉันควรใช้?

คุณสมบัติบางอย่างสำหรับห้องสมุด:

  • โอเพ่นซอร์ส
  • หลายแพลตฟอร์ม (Linux และ Windows)
  • C / C ++

หากคุณมีคำแนะนำอื่น ๆ โปรดโพสต์พวกเขาพร้อมกับคำตอบสำหรับปัญหาของฉัน


2
OpenGL ใช้ GUI ตามค่าเริ่มต้นตั้งแต่เมื่อใด : L
The Duck Communist

แปลว่าห้องสมุดที่ฉันใช้อยู่หรือที่รู้จักว่า FreeGLUT
Cristina

เพิ่มค่าหัว - ข้อกำหนดเพิ่มเติม: ต้องมีข้อความข้ามแพลตฟอร์มไฟล์ io
Jari Komppa

1
บน sourceforge กล่องโต้ตอบไฟล์เล็ก ๆ มีการเรียกใช้ฟังก์ชัน modal หลายครั้ง เป็นไฟล์ข้ามแพลตฟอร์ม C C ++ ที่ใช้ง่ายในการเพิ่มในโครงการของคุณ
tinyfiledialogs

คำตอบ:


33

ฉันยังไม่ได้ลองเอง แต่สิ่งนี้ดูน่าสนใจมาก:

librocket

แก้ไข: เนื่องจากคุณจะต้องมีบริบทที่จะแสดงผลฉันจึงแนะนำ SFML หรือ SDL 1.3


แน่นอนมันดูน่าสนใจ
จะ

2
ฉันใช้ libRocket และมันยอดเยี่ยมมาก! ความเจ็บปวดของ HTML ที่มีอยู่ในห้องสมุดด้วย แต่ด้วยการหลอกลวงรอบ ๆ ด้วยคุณจะได้รับอะไรจริง ๆ : D
Grimshaw

ดูเหมือนว่าจะจนตรอก (ไม่มีการปรับปรุงสองสามปี) นอกจากนี้การสืบค้นเอกสารยังไม่ได้ให้มุมมองที่ดีกับสิ่งที่มันชอบ โดยทั่วไปเอกสารจะอยู่ในระดับต่ำเกินไป
Jari Komppa

ไม่มีแพ็คเกจอย่างเป็นทางการสำหรับ Fedora หรือ Ubuntu (เท่าที่ฉันเห็น)
ilent2

คุณสามารถลองใช้ GLFW เพื่อสร้างบริบทการเรนเดอร์

19

GUI (CEGUI) ของ Crazy Eddieนั้นเป็นที่นิยมและคุณสามารถเปลหนึ่งในbackenderที่มีอยู่แล้วหรือเขียนเป้าหมายของคุณเองไม่ว่า API OpenGL ที่ได้รับการสนับสนุนของคุณจะเป็นอะไรก็ตาม มันเป็นโอเพ่นซอร์สหลายแพลตฟอร์มและ C ++ อย่างไรก็ตามมันให้ความสำคัญซึ่งไม่ได้เป็นหลักการ UI ที่ดีเสมอไปสำหรับเกมซึ่งอาจมีการควบคุมที่กำหนดเองหลายสิบครั้งในที่เดียว

รูปแบบที่ได้รับความนิยมเมื่อเร็ว ๆ นี้คือโหมด GUI ทันที (IMGUI)ซึ่งเป็นชนิด "no GUI library" มันมีข้อดีและข้อเสีย - มันตรงไปตรงมามาก แต่อาจเป็นเรื่องยุ่งยากในการปรับให้เหมาะสมและฉันยังไม่เห็นโมเดล IMGUI ที่ดีจริงๆสำหรับการควบคุมขั้นสูงเช่นกล่องคำสั่งผสมหรือมุมมองแบบต้นไม้ ฉันไม่เห็นการใช้ระบบหน้าต่างแบบ IMGUI ได้ดี (และฉันใช้เวลาพยายามเขียนหนึ่งซึ่งฉันไม่เคยพอใจ) - มันยอดเยี่ยมสำหรับองค์ประกอบ HUD ที่เรียบง่ายและง่ายต่อการควบคุมแบบครั้งเดียว


2
ฉันมีประสบการณ์ครั้งแรกของ IMGUI เมื่อเร็ว ๆ นี้และรู้สึกว่ามันเป็นก้าวถอยหลังที่ยิ่งใหญ่ อย่างที่คุณพูดมันยอดเยี่ยมสำหรับ HUD แบบง่าย ๆ หรือแถบเครื่องมือแบบคงที่ แต่น่ากลัวสำหรับสิ่งที่มีชีวิตชีวาไม่เป็นมิตรกับการมีศิลปินหรือนักออกแบบสร้างเลย์เอาต์
Kylotan

11
-1 ฉันรู้สึกว่า CEGUI ได้รับความนิยมเพียงเพราะมีอยู่และผู้คนพูดถึงมันเป็นค่าเริ่มต้นไปแล้ว (เช่นนี้) เมื่อฉันใช้มันฉันพบว่ามันน่าอึดอัดใจและเต็มไปด้วยโคลน
bobobobo

@bobobobo เห็นด้วย มันเป็นที่นิยมเพราะมันมีอยู่ เป็น gui "ทางการ" สำหรับ ogre (หมายถึงอะไรก็ตาม) แต่ฉันคิดว่ามันค่อนข้างยุ่งยากในการเขียนโค้ด นอกจากนี้ตัวสร้าง gui RAD เป็นรถบั๊กซี (ยังอยู่ระหว่างการพัฒนา)
cheshirekow

1
ที่รัก imguiน่าจะเป็นตัวอย่างที่ดีของการใช้ IMGUIs ที่หลากหลายได้อย่างไร ฉันยังไม่ได้ลอง แต่ดูเหมือนว่าจะค่อนข้างมีแนวโน้ม
legends2k

13

ฉันเพิ่งเจอเกวน มันเป็นห้องสมุด GUI ที่เขียนโดยผู้แต่ง Gary's Mod มันเป็นลิขสิทธิ์ของ MIT เพราะเป็นคลังเกมที่ดี
โลโก้เกวน
ห้องสมุดมีหลายสิ่งที่กำลังทำอยู่

  • ชุดเครื่องมือขนาดใหญ่
    เกวนได้รับการพัฒนาไม่กี่ปีและมันแสดงให้เห็น
  • การปรับแต่ง renderer backend ง่าย
    นี่เป็นเรื่องใหญ่ ไลบรารีมาพร้อมกับตัวสร้าง OpenGL ที่สร้างใหม่ แต่การสร้าง renderer นั้นง่ายพอที่คุณจะต้องการสร้าง renderer เฉพาะกับระบบการเรนเดอร์เกมของคุณ

  • ดูเหมือนว่าการเติมGwen น้อยลงจะทำให้ด้าน GUI ของเกมเบาลง ไม่มี XML ไม่มี HTML renderer ง่าย ๆ เพียงแค่ C ++ เกวนไม่ได้มาพร้อมกับรถตักรูปภาพ คาดว่าแบ็กเอนด์ renderer ที่จะจัดการกับการโหลด ฉันชอบคุณสมบัตินี้เนื่องจากมันทำให้ไลบรารีมีขนาดเล็กและระบบการเรนเดอร์เกมของฉันจัดการพื้นผิวอยู่แล้ว
  • Skinable
    ไม่ใช่สิ่งแรกในเหตุการณ์สำคัญของคุณ แต่ในที่สุดคุณจะต้องปรับแต่ง GUI ของคุณให้เข้ากับเกมของคุณ
  • c ++ ที่น่าสนใจ
    ฉันไม่ได้เป็นนักพัฒนาเว็บและหา CSS ของ html ศูนย์กลาง GUIs ยาก
  • อินพุตการฉีด
    นี่เป็นเรื่องใหญ่สำหรับเกม มันเป็นความเจ็บปวดเสมอในการใช้ระบบ GUI ที่ต้องการเป็นเจ้าของอินพุตโพล
  • ข้ามแพลตฟอร์ม
    ห้องสมุดมุ่งมั่นที่จะเป็นแพลตฟอร์มข้าม แต่พวกเขายอมรับว่าคุณอาจพบปัญหาเกี่ยวกับแพลตฟอร์มที่ใช้น้อยกว่า
  • การพัฒนาอย่างแข็งขัน
    ยิ่งไปกว่านั้นมีขนาดเล็กกว่า CEGUI หรือ MyGUI ดังนั้นการแฮ็กข้อมูลหรือส่งแพตช์เป็นประโยชน์มากกว่า

อย่างไรก็ตามนี่คือข้อเสียสำหรับมัน:

  • ไม่มีเอกสารหน้าเดียว ไม่ได้เป็นเว็บไซต์อีกต่อไปเพียงแค่ซื้อ GitHub
  • ตัวเรนเดอร์ที่แพ็กเกจขาดความสะดวกในการพกพาดังนั้นคุณต้องเขียนเองในกรณีที่คุณต้องการ
  • ???

2
ไม่มีเอกสาร, ไม่พกพาได้ (ยัง), opengl back-end ที่ยังไม่เสร็จ ฯลฯ ไม่สามารถหาข้อมูลออนไลน์ได้ไม่ว่าจะมีกล่องโต้ตอบไฟล์ io (หรือกล่องโต้ตอบเลยสำหรับเรื่องนั้น)
Jari Komppa

ฉันเห็นด้วยว่าเอกสารขาดหายไป ไลบรารีหลักคือข้ามแพลตฟอร์ม อย่างไรก็ตามระบบแสดงภาพและระบบป้อนข้อมูลขาดให้แพลตฟอร์มอื่น ๆ สำหรับฉันนั่นไม่ใช่ปัญหาเมื่อฉันสร้างโหมดแสดงภาพที่ปรับให้เหมาะกับฉันระบบแสดงผล
deft_code

1
ไม่มี xaml / html / css ไม่ใช่ข้อดีที่แน่นอน นั่นคือสิ่งที่สิ่งเหล่านี้ถูกสร้างขึ้นมาและพวกเขาทำได้ดีกว่า C ++ มาก
user441521

7

ขออภัยสำหรับการตอบกลับปลาย แต่คุณอาจต้องการที่จะดูที่กรอบ OpenGL UI เรียกว่าGG GG ได้รับการพัฒนาเป็นส่วนหนึ่งของโครงการFreeOrionและรวมอยู่ในที่เก็บ SVN ของพวกเขา (และ SDK ที่ดาวน์โหลดได้) ดูเหมือนว่ามีความสามารถพอสมควร ฉันได้รวมภาพหน้าจอด้านล่างแล้ว คุณสามารถคลิกที่ภาพเพื่อดูเวอร์ชันเต็ม

สกรีนช็อตของ UI ที่ใช้ GG ของ FreeOrion


ดูเหมือนว่า GG จะถูกย้ายไปที่โครงการ gigi แยกต่างหากบน sourceforge
deft_code

จะไม่ทำให้ฉันประหลาดใจ พวกเขาจงใจเก็บมันไว้แยกจาก FreeOrion
Mike Strobel

ฉันใช้เวลาตลอดทั้งเย็นกับมันและมันต้องการไฟล์ CMake จริงๆ ฉันชอบรูปลักษณ์และความรู้สึกฉันไม่ชอบที่มันใช้ Boost
knight666

GG สามารถพบได้ที่นี่: gigi.sourceforge.net
MichaelHouse

ขอให้โชคดีในการสร้างภายใต้หน้าต่าง
3Dave


4

มีลักษณะที่AntTweakBarก็ถูกใช้โดยถ่าน นอกจากนี้ยังมีห้องสมุด GUI ใหม่ที่พัฒนาขึ้นสำหรับถ่านในการทำงาน: SimpleGUI

หากคุณต้องการที่จะไป HTML CSS + มีAwesomium (ใช้Wolfire เกมส์ในเกมของพวกเขา Overgrowth ) และทางเลือกฟรีที่เรียกว่าเบอร์คีเลียม


AntTweakBar ยอดเยี่ยม แต่ค่อนข้าง จำกัด มันยอดเยี่ยมสำหรับสิ่งที่ออกแบบมาสำหรับ - ปรับแต่งค่าและรวมเข้าด้วยกันง่ายมาก - แต่ไม่มีประโยชน์ในฐานะชุดเครื่องมือ UI ทั่วไป
Jari Komppa

3

ฉันได้รับการเล่นซอกับทั้งQuickGUIและMyGUI พวกเขาเป็นทั้งห้องสมุด Ogre GUI ที่ความต้องการของผีปอบล่าสุด ฉันยังไม่มีประสบการณ์มากเกินไป แต่ดูเหมือนว่าฉันจะติดกับ QuickGUI เพราะมันเล็กกว่าและเรียบง่ายกว่ามาก

ฉันไม่แน่ใจว่าวิกิ QuickGUI ได้รับการอัปเดตแล้วหรือยัง นี่คือรุ่นล่าสุด

http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip

มี repo ได้เห็นการอัพเดทข้ามแพลตฟอร์มไม่กี่ครั้งดังนั้นคุณจะดีขึ้นเมื่อใช้ svn โดยตรง

http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform

ชื่อผู้ใช้:
รหัสผ่านไม่ระบุชื่อ: QuickGUI

สุดท้ายนี่คือวิกิสั้น ๆ เกี่ยวกับวิธีเพิ่มแบ็กเอนด์การแสดงผลที่แตกต่างกัน http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI ดูเหมือนว่าจะมีคุณสมบัติเพิ่มเติมในราคาของการทำให้ป่อง และโดยสุจริตหากความเรียบง่ายไม่ใช่ข้อกำหนดCEGUI จะพัด MyGUI ออกจากน้ำ


ฉันลอง MyGUI แล้วและมันก็บวมมากไม่แนะนำถ้าคุณต้องการประหยัดพื้นที่ ยังเล่นซอเพื่อรับ QuickGUI ให้ทำงาน
Cristina

1
ฉันลองทั้งสองใช้ CEGUI เป็นเวลานาน แต่มันก็น่ากลัวอย่างยิ่งที่จะไม่พูดถึงช้ามากกับข้อความจำนวนมาก ฉันเปลี่ยนมาที่ MyGUI เมื่อเร็ว ๆ นี้และมันก็ใช้งานได้ดี เลย์เอาต์และเครื่องมือแก้ไขสกินของพวกเขานั้นดูเรียบร้อยมาก ฉันไม่แน่ใจเกี่ยวกับการขยายตัวฉันคิดว่า CEGUI นั้นมีป่องอย่างมากเมื่อเปรียบเทียบ แนวปฏิบัติบางอย่างใน MyGUI นั้นแปลก (ตัวอย่างเช่น + = โอเปอเรเตอร์สำหรับการมอบหมายผู้เข้าร่วมและการคัดเลือกจะทำในรูปแบบแปลก ๆ เช่นกัน - ผู้เขียนกำลังพัฒนาอย่างแข็งขันและรับฟังข้อเสนอแนะที่ดี) แต่โดยรวมแล้ว CEGUI
Samaursa

@Samaursa + = โอเปอเรเตอร์หมายความว่าคุณสามารถเพิ่มผู้รับมอบสิทธิ์มากกว่าหนึ่งราย
Ocelot

3

ฉันอยากจะแนะนำ QT เนื่องจากเป็น cross platform, C ++ และคุณสามารถรับเวอร์ชันโอเพ่นซอร์สด้วยใบอนุญาต LGPL นอกจากนี้ยังใช้งานง่ายและมีส่วนประกอบที่สร้างไว้ล่วงหน้ามากมายที่คุณสามารถใช้ได้


6
อย่าคิดว่าเป็น UI ที่ใช้ OpenGL
DeadMG

ไม่ได้บอกว่าควรเป็นแบบ OpenGL หรือฉันเข้าใจผิดคำถามอย่างสมบูรณ์หรือไม่ ฉันอ่านมันในขณะที่เขาไม่ได้มีบางสิ่งที่จะเข้าครอบครองโดยไม่เสียค่าใช้จ่ายซึ่งเป็น QT ซึ่งมีความสามารถมากกว่า
martiert

ฉันต้องการที่สองนี้! ฉันใช้ qt และมีเกือบทุกอย่างที่ต้องการเมื่อเริ่มต้น ในช่วงหลายปีที่ผ่านมามันมีเสถียรภาพมากด้วยการสนับสนุนที่ดี พวกเขายังมีกรอบสำหรับเกมที่เรียกว่ากลูออน
brainydexter

8
ปัญหาของ QT และเฟรมเวิร์คโดยทั่วไปคือพวกมันควบคุมลูปหลัก ที่มักจะไม่ยืมตัวเกมดี
deft_code

1
หาก UI ไม่ใช่ OpenGL ฉันขอแนะนำให้กำจัดลูปหลักโดยใช้ UI ที่อิงเหตุการณ์และเหตุการณ์และตัวจับเวลาสำหรับเกม + กราฟิก อย่างไรก็ตามฉันใช้ QT และฉันไม่แนะนำ
Danny Varod

3

ผู้สร้างอาจยิงฉันเพื่อพูดอย่างนั้น แต่ฉันพบว่าGLFW นั้นยอดเยี่ยมมากในการสร้างเฟรมเวิร์ก GUI ข้ามแพลตฟอร์ม กลุ่มพัฒนา GLFW ยังคงดำเนินต่อไปเรื่อย ๆ เกี่ยวกับ GLFW ไม่ได้จัดการ GUI มันไม่แต่ทำดีง่ายสะอาดและแบบพกพาทั้งหมดงานของกราฟิกการจัดการเหตุการณ์และงานเมาส์ / แป้นพิมพ์ / จอยสติ๊ก

สิ่งที่ดีเกี่ยวกับ GLFW สำหรับฉันคือมันค่อนข้างเล็กไม่ต้องใช้รหัสเฉพาะระบบไม่มี GLUT และได้รับการดูแลอย่างดี มีความเสถียรสำหรับการใช้งานในโครงการ OpenGL 4.1 เมื่อเทียบกับ SDL ฉันชอบค่าใช้จ่ายเล็ก ๆ และมันง่ายเหมือนพายในการเขียนคลาสตัวจัดการ GUI

หรือมิฉะนั้นจะดูที่FLTK มันสามารถใช้กับสิ่งต่าง ๆ ทุกประเภทและนำมาใช้ใหม่ได้อย่างง่ายดาย มันใช้สำหรับการสร้างแอพพลิเคชั่น แต่สามารถจัดการวัตถุ 3 มิติได้อย่างสมบูรณ์และสร้างขึ้นบน OpenGL เล็กมากได้รับการสนับสนุนที่ดีและในขณะที่ฉันไม่เห็นคนจำนวนมากสร้างอินเตอร์เฟสแบบกำหนดเองในระดับการออกแบบเกมมีบางอย่างที่ดูเหมือนจะใช้งานได้ดี


1
ไม่ glfw เพียงห้องสมุดสำหรับรหัส windowing abstracying บนแพลตฟอร์มเดสก์ทอป? คุณสามารถสร้างกราฟิกด้วยมันได้อย่างไร

1
@GabrieleVierti อย่างที่ฉันบอกว่ามันจัดการกับอินพุตแบบเร่งข้ามแพลตฟอร์มเช่นกัน ยิ่งไปกว่านั้นมันยังช่วยให้คุณได้รับบริบทของ OpenGL หรือ Vulkan โดยเฉพาะและจัดการหม้อไอน้ำจำนวนมาก ด้วยบริบทที่ฉันเพิ่งใช้ปิรามิดฮิสโตแกรมของฮอตสปอตบนหน้าจอและใช้เป็นส่วนหลักของตัวจัดการเหตุการณ์คลิก / ประเภท จากนั้นควบคุมการเชื่อมโยงไปยังสถานที่บางแห่งบนปิรามิด คำสั่งการวาดปกติสำหรับการตั้งค่ากราฟิกที่แท้จริง ชุด UI ใด ๆ สำหรับสิ่งบนเว็บใช้งานได้ดีขึ้นกับงานศิลปะเฉพาะโดเมน
Garet Claborn

มันจะง่ายกว่านี้เพียงแค่เพิ่มกรอบงาน gui ที่สร้างไว้ล่วงหน้า (เช่นที่รัก ImGui)

1
ImGui ทำงานในโหมดทันทีดังนั้นคุณจะสูญเสียการเร่งด้วยฮาร์ดแวร์ สิ่งที่ฉันพูดถึงฉันต้องติดตามต่อไปสำหรับการเรนเดอร์เกมดังนั้นการเพิ่มการซ้อนทับแบบ 2D บางรายการจึงไม่ใช่สิ่งสำคัญ ฉันสามารถดูว่ามันจะยุ่งยากสำหรับบางโครงการแม้ว่า
Garet Claborn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.