ฉันสอนตัวเองที่ห้องสมุด OpenGL มาระยะหนึ่งแล้วและต้องการเริ่มทำเกม อย่างไรก็ตามเพื่อการแนะนำที่ง่ายขึ้นฉันต้องการเริ่มด้วยบางสิ่งบางอย่าง 2D เช่นเกมสไตล์โปเกมอนบนลงล่าง
นี่เป็นแผนที่ดีหรือเป็น OpenGL ที่สร้างขึ้นเป็นพิเศษสำหรับ 3D หรือไม่?
ฉันสอนตัวเองที่ห้องสมุด OpenGL มาระยะหนึ่งแล้วและต้องการเริ่มทำเกม อย่างไรก็ตามเพื่อการแนะนำที่ง่ายขึ้นฉันต้องการเริ่มด้วยบางสิ่งบางอย่าง 2D เช่นเกมสไตล์โปเกมอนบนลงล่าง
นี่เป็นแผนที่ดีหรือเป็น OpenGL ที่สร้างขึ้นเป็นพิเศษสำหรับ 3D หรือไม่?
คำตอบ:
OpenGL ค่อนข้างเหมาะสมสำหรับเกม 2D แม้ว่าโดยทั่วไปจะใช้สำหรับ 3D แต่ฟังก์ชันเดียวกันนี้สามารถใช้กับเกม 2D ได้ กล่าวคืออะไรก็ตามที่คุณสามารถทำได้ด้วย 3D OpenGL จะสามารถใช้งานได้กับ "2D" OpenGL
สามารถดูข้อมูลเพิ่มเติมบางอย่างได้ที่ตำแหน่งนี้
2D OpenGL สามารถทำได้ในลักษณะเดียวกับ 3D OpenGL 2D OpenGL เป็นแอปพลิเคชั่นที่ใช้เทคนิคเพียงอย่างเดียวนั่นคือการแสดงฉากบนระนาบแบนจากนั้นใช้และการฉายภาพแบบออโธกราฟฟิคแทนการฉายภาพมุมมองซึ่งขึ้นอยู่กับการตั้งค่าของคุณ
ตัวอย่าง:
(a) เป็นฉากในการฉายภาพออโทกราฟ (b) เป็นฉากเดียวกันโดยใช้การฉายภาพมุมมอง ในเกม 2 มิติสิ่งนี้อาจทำให้ตำแหน่งของสไปรต์ผิดพลาดได้หากมีการเปลี่ยนแปลงความลึก (ซึ่งขึ้นอยู่กับการพัฒนาของคุณ การใช้การฉายภาพเปอร์สเปคทีฟยังทำให้การจัดตำแหน่งสิ่งต่าง ๆ ในพิกัดหน้าจอทำได้ยากขึ้น
นอกจากนี้ OpenGL ยังมีประโยชน์มากมายมากมาย ในขั้นต้นการเร่งด้วยฮาร์ดแวร์เป็นข้อดีอย่างมาก นอกจากนี้ยังมีการควบคุมในระดับที่ดีกว่าในสิ่งที่กราฟิกการ์ดทำและวิธีการที่เกี่ยวข้อง
OpenGL เนื่องจากชื่อคือไลบรารีกราฟิก แม้ว่ามันจะถูกพัฒนาขึ้นโดยคำนึงถึง 3 มิติ แต่ก็ไม่มีข้อสันนิษฐานฮาร์ดโค้ดในห้องสมุดที่คุณจะใช้ 3d ยิ่งไปกว่านั้นด้วยความสามารถแบบ 3 มิติสิ่งต่าง ๆ ที่ยากที่จะทำในแนวทาง 2d อย่างเข้มงวดนั้นเป็นเรื่องเล็กน้อย ตัวอย่าง:
นี่เป็นเพียงไม่กี่ข้อได้เปรียบที่มาจากด้านบนของหัวของฉันฉันเดาว่ามีอีกหลายคน
ในขณะที่ OpenGL เป็น 3D API คุณยังสามารถใช้เพื่อสร้างเกม 2D ได้ คุณสามารถปลอมสภาพแวดล้อม 2D ในแบบ 3 มิติด้วยเทคนิคต่าง ๆ เช่นการควบคุมข้อมูลไปยังระนาบ
อย่างไรก็ตามมีการสนับสนุนที่ จำกัด ใน API จริงสำหรับการทำสิ่งนี้อย่างชัดเจน (ไม่มีฟังก์ชั่น "เปิดโหมด 2D" เป็นต้น) วิธีที่คุณต้องการจำลอง (ซึ่งคุณสามารถหาได้จากบทเรียนออนไลน์มากมาย) อาจเป็นเรื่องยากที่จะเข้าใจอย่างสมบูรณ์โดยไม่ต้องทำความเข้าใจกับท่อ 3D ที่ใช้งานจริงภายใต้ประทุน
ดูเหมือนว่าคุณได้ดู OpenGL มาระยะหนึ่งแล้วและอาจเข้าใจพื้นฐานเหล่านั้นได้ดี แต่ถ้าคุณรู้สึกสั่นคลอนกับพวกเขาคุณอาจต้องการที่จะเริ่มต้นกับเกมของคุณโดยใช้ห้องสมุด 2D ที่ถูกสร้างขึ้นบน OpenGL เช่นCocos2d มันจะให้ประสบการณ์บางอย่างกับ 2D API ที่ควรมีลักษณะโดยทั่วไปและยังทำให้คุณได้รับประโยชน์จากแบ็คเอนด์ 3D ที่เร่งด้วยฮาร์ดแวร์ถ้าคุณรู้สึกว่าคุณยังไม่พร้อมที่จะจัดการกับสิ่งทั้งหมดด้วยตัวคุณเอง
ตอนนี้ฉันมีประสบการณ์มากมายในการเขียนโปรแกรม OpenGl และฉันสามารถบอกคุณได้ว่ามันเป็นความเจ็บปวด ในอดีตเมื่อฉันเริ่มเขียนโปรแกรมฉันมีประสิทธิผลมากในสภาพแวดล้อมที่เรียบง่ายเช่น BlitzBasic จากนั้นฉันก็เริ่มเข้าสู่ขั้นตอนต่อไปด้วยการเรียนรู้ C ++ และ OpenGl และเมื่อคุณไม่มีครูที่ดีหรือคนถามคุณจะวิ่งเข้าไปในหน้าจอสีดำอย่างถาวร ปัญหาที่ใหญ่ที่สุดคือสถานะของ OpenGl มีสวิตช์มากมายที่คุณสามารถสลับเพื่อเปลี่ยนสถานะของ OpenGL ได้ และสวิตช์บางตัวขึ้นอยู่กับสวิตช์อื่น ตัวอย่างเช่น glGet (GL_TEXTURE_BINDING_2D) ขึ้นอยู่กับ glGet (GL_ACTIVE_TEXTURE) และเอกสารประกอบที่ขึ้นอยู่กับสถานะอื่นที่ไม่ดีที่สุด การดำเนินการหลายอย่างเช่นการโหลดพื้นผิวต้องการให้คุณเปลี่ยนสถานะนี้ซึ่งมักจะนำไปสู่การแตกหักของรหัสอื่นที่ต้องใช้สถานะเก่า และจากนั้นก็มีปัญหานี้ที่ OpenGl เป็นพฤติกรรมการใช้งานขึ้นอยู่กับการใช้งานเพื่อให้โปรแกรมของคุณทำงานบนเครื่องของคุณ แต่ในเครื่องอื่น ๆ ทั้งหมดที่คุณเห็นเป็นสีดำ สิ่งที่คุณสามารถทำได้ที่นี่คือการเดาว่ามีอะไรผิดปกติในโค้ด 10,000 บรรทัด ดังนั้นถ้าคุณชอบความหงุดหงิดใช่แล้วใช้ OpenGl สำหรับสิ่ง 2 มิติ สำหรับคนอื่น ๆ อย่าทำถ้าคุณไม่ต้องการมัน คุณสามารถทำงานได้อย่างมีประสิทธิภาพใน OpenGl แต่มันจะทำให้คุณเสียเวลาและความกังวลใจ มีความเป็นไปได้มากกว่าที่คุณต้องการใช้จ่าย คุณสามารถทำงานได้อย่างมีประสิทธิภาพใน OpenGl แต่มันจะทำให้คุณเสียเวลาและความกังวลใจ มีความเป็นไปได้มากกว่าที่คุณต้องการใช้จ่าย คุณสามารถทำงานได้อย่างมีประสิทธิภาพใน OpenGl แต่มันจะทำให้คุณเสียเวลาและความกังวลใจ มีความเป็นไปได้มากกว่าที่คุณต้องการใช้จ่าย
Unity3D ใช้ OpenGL และฉันใช้สำหรับ 2D และ 2.5D platformers Unity3D นั้นเป็น 3D Gaming Engine แต่ก็ใช้สำหรับเกม 2D และ 2.5D ด้วยเช่นกัน คุณสามารถมีเครื่องบิน x, y, z และ จำกัด การเคลื่อนไหวหรือการหมุนให้เหลือเพียง 2 ของเครื่องบินเหล่านั้นเท่านั้นสร้างบรรยากาศ 2D ในโลก 3D