ทางเลือกใดที่จะมี GLUT


12

ฉันพยายามที่จะเรียนรู้ OpenGL และฉันก็พบว่าจำนวนที่มากเกินไปเป็นล้าสมัย ฉันรู้จัก SDL แล้วและดูเหมือนว่าเป็นทางเลือกที่ดี ฉันควรใช้ SDL เพื่อพัฒนาเกมด้วย OpenGL หรือมีทางเลือกอื่นที่ดีกว่านี้ ฉันยังใหม่กับการพัฒนาเกมดังนั้นฉันจึงไม่ค่อยรู้อะไรเกี่ยวกับสถานะของศิลปะ

คำตอบ:


27

ฉันเพิ่งพบว่า GLUT ล้าสมัยแล้ว

นั่นคือสิ่งที่เกิดขึ้นเมื่อคุณยอมรับคำตอบแรกที่คุณเจอ คุณได้รับข้อมูลที่ไม่ดี ไม่ควรใช้ GLUT 3.7 แต่ FreeGLUT สามารถใช้งานร่วมกับระบบย้อนกลับได้อย่างสมบูรณ์

อย่างไรก็ตามคำถามของคุณไปที่อื่น สำหรับการสร้างเกมจริงรูปแบบ GLUT ของ * ไม่เหมาะสม มันไม่ได้ให้คุณควบคุมลูปหลักและคุณต้องการมันจริงๆในเกม (FreeGLUT มีวิธีควบคุมลูปหลัก แต่ก็ยังแปลกอยู่) GLUT สำหรับการเขียนการสาธิตกราฟิก เป็นสิ่งสำคัญมากเมื่อทำการทดสอบเอฟเฟกต์กราฟิกแบบใหม่ดังนั้นจึงควรมีอยู่ในกล่องเครื่องมือของคุณเมื่อจำเป็น แต่รหัสเกมหลักของคุณไม่ควรใช้

GLFWเป็นทางเลือกที่มีน้ำหนักเบาเป็นเกมทางเลือกสำหรับ GLUT มันให้การสนับสนุนขั้นพื้นฐานสำหรับสิ่งต่าง ๆ นอกเหนือจากการสร้างหน้าต่าง OpenGL มันช่วยให้คุณรับอินพุตโหลดภาพเป็นพื้นผิวและอีกสองอย่าง

SDL , SFMLและAllegro 5เป็นชุดเครื่องมือมัลติมีเดียทั้งหมด พวกเขาสามารถสร้างหน้าต่าง OpenGL แต่พวกเขาทำมากขึ้นกว่าที่ พวกเขาให้การสนับสนุนอย่างเต็มที่สำหรับการป้อนข้อมูลเสียงและอื่น ๆ อีกมากมายที่คุณต้องการในการสร้างเกม หากคุณกำลังสร้างเกมสิ่งเหล่านี้เป็นจุดเริ่มต้นที่ดี ฉันชอบ Allegro 5 เป็นส่วนตัว แต่นั่นเป็นเพียงความลำเอียงของฉันที่มีต่อเอกสารที่ดีและ API ที่สะอาด


1
ชื่อ AAA อะไร (ทั้งพีซีเท่านั้นและหลายแพลตฟอร์ม) ใช้? พวกเขาใช้สิ่งเหล่านี้ (GLFW, Allegro) ที่คุณพูดถึงเพื่อจัดการกับหน้าต่าง opengl หรือไม่? หรือพวกเขาเขียน 'ทุกสิ่ง' ของตนเองตั้งแต่เริ่มต้น?
Quazi Irfan

@iamcreasy: "ชื่อ AAA" (ฉันเกลียดคำนั้น) อย่าใช้สิ่งเหล่านี้ โดยทั่วไปแล้วพวกเขาไม่ได้ใช้โอเพ่นซอร์สอะไรเลย พวกเขาทำได้ แต่ถ้าพวกเขาจะใช้ห้องสมุดพวกเขาต้องการใช้ห้องสมุดที่ได้รับการสนับสนุน มีข้อยกเว้นบางอย่างเช่น ODL หรือ Bullet แต่สิ่งเหล่านั้นเป็นข้อยกเว้นมากกว่ากฎ
Nicol Bolas

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

1
อีกข้อเสียใหญ่ของ GLUT คือโมเดลอินพุตไม่เหมาะอย่างยิ่งกับเกม ไม่มีวิธีรับรหัสดิบหรือรับเหตุการณ์กด / ปล่อยบนปุ่มตัวปรับแต่งเอง (เช่นใช้ ctrl เป็นปุ่มไฟ) และไม่มีวิธีรับบริบท GL พื้นฐาน (ซึ่งจำเป็นต้องเปิดใช้งาน vsync บน X11 ตัวอย่างเช่น).
ปุย

1
@ NicolBolas อ่าฉันลืมไปแล้ว 2.7 พวกมัน [กระทู้, ภาพ] ถูกประกาศว่า 'ไม่อยู่ในบริบท' สำหรับการเปิดตัว GLFW 3.0
decaviatedcaviar


2

หากเป้าหมายของคุณคือการพัฒนาเกม

ขึ้นอยู่กับว่าคุณต้องการให้เกมของคุณเป็นแบบข้ามแพลตฟอร์มหรือไม่ สำหรับเกมพกพา (Windows, Mac, Linux) SDL นั้นเป็นตัวเลือกเดียว

หากคุณกำหนดเป้าหมายเฉพาะ Windows และ / หรือ XBox มีทางเลือกที่ดีกว่ามากเช่น XNA ซึ่งช่วยให้คุณไม่ต้องเขียนโค้ดจำนวนมากด้วยตนเอง

หากเป้าหมายของคุณคือการเรียนรู้ OpenGL

เพียงแค่เขียนโปรแกรมใน OpenGL แบบดิบ ๆ แต่ต้องเตรียมพร้อมที่จะเผชิญกับแนวความคิดที่ไม่ได้ใช้งานง่ายคณิตศาสตร์และคู่มือขนาดใหญ่


อย่างที่ Takumi กล่าวว่ายังมี SFML เป็นห้องสมุดพกพา ดีกว่า SDL imho (ทันสมัยมากขึ้น)
kaoD

8
-1: "ดูเหมือนว่า SDL สำหรับเกมพกพา (Windows, Mac, Linux)" นี่ไม่ใช่ความจริงจากระยะไกล SFML และ Allegro 5 ทั้งคู่มีตัวเลือกที่ใช้ได้อย่างสมบูรณ์แบบและทั้งคู่มีฐานแพลตฟอร์มที่กว้างขึ้น
Nicol Bolas

1

GLUT เป็น API เช่นเดียวกับห้องสมุด ไลบรารี่ดั้งเดิมนั้นล้าสมัยไปแล้ว API เป็นสิ่งที่แตกต่างกันมันค่อนข้างดีที่จะเริ่มต้นมันแค่ต้องการการแก้ไขเพื่อเอาชนะข้อ จำกัด และจัดการกับความต้องการใหม่ ๆ การใช้งานปัจจุบันหลักคือ FreeGLUT ซึ่งได้รับการสนับสนุนและไม่ล้าสมัย นั่นหมายความว่าทางเลือกที่ดีสำหรับ GLUT (เช่นเดียวกับในไลบรารี GLUT) คือ GLUT (เช่นเดียวกับ FreeGLUT)

ปัญหาที่ระบุไว้ข้างต้นด้วย "การควบคุมของวงหลัก" ไม่ถูกต้อง ด้วยรุ่น GLUT ที่ใหม่กว่าคุณสามารถควบคุมลูปเกมของคุณได้ดียิ่งขึ้น (ถ้านั่นสำคัญสำหรับคุณ) ข้อ จำกัด ได้รับการแก้ไขโดย glutMainLoopEvent () ข้อ จำกัด นี้และอื่น ๆ ได้รับการแก้ไขที่นี่:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


" ด้วยรุ่น GLUT ที่ใหม่กว่าคุณสามารถควบคุมลูปเกมของคุณได้ดีขึ้น (ถ้านั่นเป็นสิ่งสำคัญสำหรับคุณ) " มันเป็นเกมดังนั้นใช่นั่นเป็นสิ่งสำคัญสำหรับคุณ นอกจากนี้ยังglutMainLoopEventเป็นวิธีที่ดีในการจัดการลูปหลัก มันยังคงใช้โมเดลที่ขับเคลื่อนด้วยเหตุการณ์เพื่อป้อนข้อมูลของคุณแทนที่จะเป็นโมเดลโพลที่คุณได้รับข้อมูลที่คุณต้องการเมื่อคุณต้องการ
Nicol Bolas

ฉันต้องยืนยันว่าโมเดลที่ขับเคลื่อนด้วยเหตุการณ์นั้นมีประสิทธิภาพมากกว่าการทำโพลหากคุณไม่ได้โพลในข้อมูลที่จัดเก็บจากเหตุการณ์ (ซึ่งก็ใช้ได้) ทรัพยากรระบบการสำรวจควรทำอย่างระมัดระวัง
Ingemar Ragnemalm

0

Qt รองรับ OpenGL ลองดูที่ Open Inventor และพิจารณาว่าเหมาะสมหรือไม่ที่คุณจะตรงไปที่ 3D API ระดับสูงกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.