ทรัพยากรการเรียนรู้ที่ดีสำหรับ OpenGL มีอะไรบ้าง [ปิด]


88

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

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


12
ฉันเกลียดที่จะพูด แต่ OpenGL Superbible หรือ RedGL ของ Openbook เป็นวิธีที่ดีที่สุดในการเรียนรู้ OpenGL มันเป็นเรื่องที่ซับซ้อนดังนั้นหนังสือต้องมีขนาดใหญ่
Rachel Blum

6
มันเป็น accesible แม้กระทั่งสำหรับมือใหม่หรือไม่?
DFectuoso

คำตอบ:


36

ระวังเมื่อคุณดูบทช่วยสอน OpenGL เนื่องจากมีหลายคนรวมอยู่ด้วยเพียงแค่สอนสิ่งที่คุณไม่ควรทำอีกต่อไป ทุกวันนี้ OpenGL เป็นสัตว์ร้ายที่แตกต่างจากเมื่อ 10 ปีก่อน

ตัวอย่างที่ดีที่หลีกเลี่ยงสิ่งที่คัดค้านสามารถดูได้ที่นี่: http://www.g-truc.net/post-tech-content-sample.html

OpenGL Samples Pack 4.0.1.0 เป็นการอัปเดตที่นำจำนวนตัวอย่างไปเป็น 58 ตัวอย่าง; รวม 13 ตัวอย่าง OpenGL 4 ตัวอย่าง 33 OpenGL 3.3 ตัวอย่างและ 12 ตัวอย่าง OpenGL 2 สำหรับ Visual Studio 2008 และ 2010 ใน 32 และ 64 บิต


มันเชื่อมโยงกับภูเขา!
14170

65

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

ตัวอย่าง OpenGL

มีโค้ดตัวอย่างมากมายที่คุณสามารถอ่านได้ ตัวอย่างของ G-trucนั้นค่อนข้างกว้างขวางและครอบคลุมคุณสมบัติขั้นสูงมากมาย

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

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

หนังสือ OpenGL

มีหนังสือที่ซื้อได้จริงจำนวนพอสมควรสำหรับการพัฒนา OpenGL ฉันจะครอบคลุมความคิดของฉันเกี่ยวกับสองที่ใหญ่ที่สุดที่นี่

OpenGL Redbook

อันนี้ค่อนข้างมีปัญหาจากมุมมองการปฏิบัติอย่างหมดจด ดูรุ่นที่ 7 ครอบคลุม GL 3.0 และ 3.1 ซึ่งค่อนข้างเก่า มีอยู่เป็นจำนวนมากของคุณสมบัติที่มีประโยชน์เพิ่มให้กับ OpenGL ตั้งแต่นั้นคุณสมบัติที่เปลี่ยนวิธีที่คุณจะเขียนสิ่งที่ ไม่ใช่คุณสมบัติฮาร์ดแวร์ทั้งหมด

รุ่นที่ 8 กำลังจะมา "เร็ว ๆ นี้" และจะครอบคลุม 4.1 ไม่มีคำพูดใด ๆ ว่าครอบคลุมเนื้อหาที่มีฟังก์ชั่นเก่าหรือไม่

ฉันว่าหนังสือเล่มนี้ก็โอเค ปัญหาที่ใหญ่ที่สุดกับมันคือการจัดระเบียบของข้อมูล มันเหมือนคู่มืออ้างอิงที่ครอบคลุมมากกว่าหนังสือที่สร้างขึ้นเพื่อการเรียนรู้ นี่คือสิ่งที่ฉันหมายถึง

หนึ่งในสิ่งที่สำคัญที่สุดที่ควรทำเมื่อการสอนคือไม่ให้นักเรียนใช้ข้อมูลที่ไม่สำคัญเกินความจำเป็น แต่ Redbook ทำเช่นนั้นอย่างแน่นอน เมื่อแนะนำวัสดุมันแนะนำวัสดุจำนวนมาก ส่วนมากของมันไม่จำเป็นสำหรับงานในมือ

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

นั่นไม่ใช่การจัดระเบียบข้อมูลที่ดี

OpenGL ที่ยอดเยี่ยม

หนังสือเล่มที่ห้าของหนังสือเล่มนี้ครอบคลุมเฉพาะแกนกลาง GL 3. เท่าดังนั้นจึงไม่มีฟังก์ชั่นคงที่

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

วิธีที่ทำให้สำเร็จคือการร้องเรียนอันดับ 1 ของฉันเกี่ยวกับหนังสือเล่มนี้ ผู้เขียนสร้างห้องสมุดที่ใช้รูปแบบของฟังก์ชั่นคงที่ OpenGL มันล้อมรอบ VAOs วัตถุบัฟเฟอร์ shaders และสิ่งอื่น ๆ อีกมากมายเพื่อให้เขาสามารถวาดวัตถุคณิตศาสตร์เมทริกซ์และพื้นผิวโดยไม่ต้องพูดถึงสิ่งต่าง ๆ เช่นวิธีการทำงานของ GL ในรายละเอียด

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

มันเป็นหนังสือที่ให้ประโยชน์ได้มากกว่า moreso หากทุกอย่างล้มเหลวมันจะทำงาน แต่ฉันคิดว่ามันน่าจะดีกว่า

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

วัสดุ OpenGL ออนไลน์

มีสื่อออนไลน์มากมายที่เราสามารถเรียนรู้ได้

บทแนะนำของ NeHe

บทเรียน NeHe ของเป็นคนอื่นได้ระบุไว้เป็นอย่างมากจากวันที่ พวกเขามุ่งเน้นไปที่ฟังก์ชั่นคง OpenGL มันมักจะระบุว่ามันเป็นเรื่องง่ายที่จะเรียนรู้ฟังก์ชั่นคงที่ GL ซึ่งเป็นความจริง แต่นั่นไม่ได้ทำให้มันเป็นความคิดที่ดี

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

ความแตกต่างคือคุณสามารถทำให้ฟังก์ชั่นคงที่ได้โดยไม่ต้องเข้าใจ สิ่งนี้ส่งเสริมการเขียนโปรแกรมลัทธิสินค้า มันทำให้เป็นไปได้ที่จะได้รับบางสิ่งบางอย่างบนหน้าจอโดยไม่รู้ตัวว่ากำลังทำอะไรอยู่ ในฟอรัม OpenGL.org เราพบคำถามเกี่ยวกับฟังก์ชั่นคงที่โดยรอบตั้งแต่ผู้ที่ไม่ทราบว่า gluLookAt ทำงานอย่างไรไปจนถึงปัญหาเกี่ยวกับไฟส่องสว่าง

ไม่ฉันไม่คิดว่า NeHe เป็นวิธีที่ดีในการเรียนรู้ OpenGL

ความเห็นด้านบนสามารถใช้กับบทช่วยสอนที่ไม่ใช่ shader เช่นSwiftless , Lighthouseและอื่น ๆ

การเขียนโปรแกรม OpenGL ของ Wikibook

Wikibook OpenGL Programmingน่าจะเทียบเท่ากับ NeHe ในปัจจุบัน มันครอบคลุม GL เวอร์ชัน 2.1 เพราะพวกเขาต้องการให้มันเกี่ยวข้องกับแพลตฟอร์มมือถือ ถ้านั่นเป็นสิ่งสำคัญสำหรับคุณแล้วโดยทั้งหมดดูที่นี่

ปัญหาอื่น ๆ ของ NeHe และทำให้ Wikibook นี้เป็นจุดสนใจที่สำคัญในซอร์สโค้ด อัตราส่วนข้อความต่อโค้ดมีขนาดเล็กมาก มีโค้ดจำนวนมากแต่ตัวอักษรไม่ได้อธิบายว่ามันทำงานอย่างไร

เป็นตัวอย่างให้ดูที่ด้านล่างของบทช่วยสอน 2 มันแนะนำการผสม มันไม่ได้บอกว่าการผสมทำงานอย่างไร ไม่ได้glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)หมายความว่าจริงหรือหมายถึงอะไร เพิ่งพูดว่า "นี่คือโค้ดบางส่วนที่ทำให้สิ่งต่าง ๆ โปร่งใส"

นั่นไม่ใช่สภาพแวดล้อมการเรียนรู้ที่ดีที่สุด

บทแนะนำที่ไม่สมบูรณ์

Swiftless มีชุดของOpenGL บทเรียน ทุเรียนซอฟแวร์นอกจากนี้ยังมีบางส่วนShader บนพื้นฐานของบทเรียน และมีของ"OpenGLBook.com" บทเรียน

สิ่งที่ทุกคนมีเหมือนกันคือ ... พวกมันไม่สมบูรณ์และถูกทอดทิ้ง พวกเขามีบทเรียนประมาณ 4-5 บทและจากนั้นก็ถูกทิ้ง ไม่มีผู้ใดมาถึงพื้นผิวแสงหรืออะไรทำนองนั้น เอาล่ะทุเรียนก็ชนกับพื้นผิว แต่ไม่ส่องแสง

มากสามารถเปล่งประกายจากพวกเขา แต่ก็มีหลายสิ่งที่ขาดหายไปเช่นกัน

การส่งเสริมตนเองที่ไร้ยางอาย

การทบทวนบทเรียนกราฟิก 3Dของฉันจะเป็นความขัดแย้งทางผลประโยชน์ที่น่ากลัว ดังนั้นฉันจะถือเอาความยาวเกี่ยวกับองค์กรที่อยู่เบื้องหลังพวกเขาและทำไมฉันคิดว่าพวกเขาดี

โอ้และใช่ฉันกำลังทำงานกับบทที่ 17 โครงการยังไม่ตาย

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

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

บทแนะนำการส่องสว่างสร้างอีกแบบหนึ่งแบบต่อเนื่อง จากนั้นกระจายแสงต่อชิ้นส่วนจากนั้นกระจายแสง ช่วงไดนามิกเป็นตัวเลือกที่น่าสนใจ เนื้อหาเบื้องต้นส่วนใหญ่พยายามหลีกเลี่ยงสิ่งนั้น แต่ฉันยอมรับมัน วันนี้คุณไม่ใช่โปรแกรมเมอร์กราฟิกหากคุณคิดว่าความเข้มของแสงอยู่ในช่วง [0, 1] และคุณก็ไม่ได้เป็นโปรแกรมเมอร์กราฟิกในทุกวันนี้ถ้าคุณไม่รู้วิธีบำรุงรักษาท่อส่งสีเชิงเส้น

คนสุดท้ายในไฟส่องบน imposters เป็นคนแปลก ๆ ฉันพยายามออกแบบบทช่วยสอนที่แก้ปัญหาแทนที่จะแสดงฟังก์ชั่น OpenGL บางอย่างโดยเฉพาะอย่างยิ่งเมื่อหนังสือดำเนินไป การออกแบบการสอนของฉันมากมายมาจากการหาวิธีที่จะพูดคุยเกี่ยวกับบางหัวข้อในขณะที่ยังทำให้พวกเขาเป็นปัญหาจริงและไม่ชัดเจน "เรากำลังเรียนรู้ X ตอนนี้" เรขาคณิต shaders เป็นเรื่องยากเพราะพวกเขาไม่ได้แก้ปัญหามากจริงๆ

ผู้นำเสนอแสดงถึงปัญหาที่ GS มีประโยชน์ในการแก้ไข นอกจากนี้ยังอนุญาตให้ฉันพูดถึงสิ่งต่าง ๆ ที่ใช้น้อยกว่าเช่นdiscardและเปลี่ยนความลึกของชิ้นส่วน และมันแสดงให้เห็นถึงพลังของ shaders จริง ๆ : คุณสามารถทำให้สี่เหลี่ยมแบนกลายเป็นทรงกลม

บทเรียนการทำพื้นผิวก็มีความน่าสนใจเช่นกัน หนึ่งในเหตุผลที่ฉันเลิกพูดคุยเกี่ยวกับพื้นผิวสีแบบแพร่กระจายจนกระทั่งหนึ่งในสามคือการพูดคุยเกี่ยวกับพื้นผิว sRGB ชั่วคราว ด้วยวิธีนี้ฉันสามารถพูดคุยเกี่ยวกับปัญหาพื้นฐานเกี่ยวกับพื้นผิว (โหลดข้อมูลวางไว้ในเฉดสีกรองกรองหนีบ ฯลฯ ) โดยไม่ต้องจัดการกับปัญหาเชิงเส้น ดังนั้นฉันจึงสามารถใช้บทช่วยสอนทั้งหมดในหัวข้อนั้น ที่ให้ฉันจริงเน้นจริง ๆความสำคัญในการรักษาท่อสีเชิงเส้นคืออะไร

มันเป็นหนึ่งในสัตว์เลี้ยงของฉัน


1
ฉันเพิ่งเริ่มอ่านหนังสือ / ซอร์สโค้ดของคุณและมันก็เหลือเชื่อ .. ขอบคุณมากสำหรับการปล่อยฟรี!
Alex Coplan

แม้ว่าฉันจะเป็นผู้ชายเทเลคอม แต่ก็แค่ลองทำแบบฝึกหัดของคุณ และเป็นสิ่งที่ดีสำหรับมือใหม่ สิ่งเดียวคือ opengl sdk ที่ไม่เป็นทางการไม่สามารถสร้างได้อย่างถูกต้องกับ Ubuntu12.04 + Eclipse มีวิธีใดบ้างที่เราสามารถติดตั้งได้โดยตรง (เช่นที่เราทำกับ GL, GLEW, GLU, จำนวนที่มากเกินไปเป็นต้น)
iammilind

@iammilind: " ไม่สามารถ build ได้อย่างถูกต้อง " การสร้างล้มเหลวอย่างไร นอกจากนี้ยังไม่มี "การติดตั้ง"; นั่นคือจุดครึ่ง มันเป็นกลไกการคัดลอก / premake / และการรันโดยไม่มีการติดตั้งระบบการพึ่งพา PPM หรือสิ่งอื่น ๆ ที่ฉันไม่เข้าใจ คุณวางไว้ในตำแหน่งที่คุณต้องการไม่ใช่ที่ที่ระบบของคุณคิดว่าควรไป
Nicol Bolas

1
ในอูบุนตูโชคไม่ดีที่กระบวนการสร้างล้มเหลวในpreamakeระยะตัวเอง :( ... มันจะเป็นประโยชน์อย่างมากถ้าในเวลาว่างคุณสามารถลองใช้งานบทแนะนำโค้ดของคุณด้วย Ubuntu + Eclipse ได้ในตอนนี้วิธีอื่นที่ฉันกำลังติดตามอยู่ คือการใช้วัสดุการอ่านที่คุณให้และที่เกี่ยวข้องว่าบางบทเรียนรหัสอื่น ๆ เหตุผลก็คือการที่ฉันได้เห็น "arcsynthesis" สถานที่ที่ดีที่สุดที่จะบนเว็บจนถึงขณะนี้สำหรับการเรียนรู้มือใหม่ OpenGL..
iammilind

@iammilind: ฉันสังเกตเห็นว่าคุณไม่ได้ยื่นรายงานข้อผิดพลาด คุณคาดหวังว่าสิ่งเหล่านี้จะได้รับการแก้ไขโดยไม่มีใคร?
Nicol Bolas


8

หนังสือเล่มเดียวของฉันใน OpenGL คือ "OpenGL SuperBible, 4th edition" และที่ 5 กำลังจะวางจำหน่ายในอีกไม่กี่สัปดาห์ ฉันคิดว่ามันดีสำหรับทั้งผู้เริ่มต้นและโปรแกรมเมอร์ขั้นสูง

แก้ไข: ฉันอาจเพิ่มไม่เป็นไปตามแนวโน้มเทคโนโลยีล่าสุดหากคุณเพียงแค่เรียนรู้ที่จะตั้งโปรแกรม โอกาสที่คุณจะกลายเป็นผู้เชี่ยวชาญโดยใช้ methology เพียงหนึ่งอินเทอร์เฟซใหม่ / รุ่น 5 ที่เพิ่งเปิดตัว เราได้เห็นนักเวทย์ล่วงหน้าทุก ๆ 3 เดือนดูเหมือนว่า ดังนั้นเลือกสิ่งที่มีเอกสารที่ดีที่สุด (โดยทั่วไปแล้วพื้นฐาน) สร้างโปรแกรมไม่กี่โปรแกรมและค่อย ๆ ก้าวหน้าเพราะมีโอกาสมากที่คุณจะชนรหัสเก่าในอนาคต หวังว่ามันจะช่วย!


ตอนนี้ฉันกำลังจะผ่านไปได้อย่างยอดเยี่ยมและมันก็ดีสำหรับคนที่ไม่มีพื้นหลังกราฟิกเพราะมันจะอธิบายแนวคิดทั้งหมดที่คุณทำ
Spidey

5

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

ปัญหาใหญ่ที่ฉันเผชิญคือสิ่งต่าง ๆ มากมายที่มีอยู่ได้รับการอธิบายใน OpenGL รุ่นล่าสุด

ทรัพยากรที่ดีที่สุดที่ฉันได้รับสามารถที่จะหาได้รับอยู่ในบล็อกของโจ มันเป็นการดีที่สุดที่จะแนะนำท่อส่งที่ทันสมัยและให้คุณผ่านตัวอย่างในรูปแบบที่อ่านง่ายกว่าสิ่งที่ฉันสามารถหาได้จากที่อื่น ดูเหมือนว่าNeheจะได้รับการอัปเดตสองสามรายการเมื่อเร็ว ๆ นี้และในขณะที่บทเรียนของพวกเขายังเก่าอยู่ข่าวบางเรื่องอาจเป็นที่สนใจ Lazy Foo 'ก็เป็นแหล่งข้อมูลที่ดีเช่นกัน แต่บทเรียนของ Nehe คือบทเรียนที่ใช้เนื้อหาที่ไม่เหมาะสม

ฉันคิดว่าหลังจากวันหยุดสุดสัปดาห์หรือ 2 เมื่อคุณสบายใจออกไปและทำโครงการขนาดเล็กเพื่อใช้ทุกอย่าง การฝ่าวงล้อมหรือ Tetris - สิ่งที่คุณสามารถมีสมาธิกับรหัสตัวเอง คุณเรียนรู้มากขึ้นเมื่อคุณออกไปและพยายามทำโครงการจริงโดยไม่คำนึงถึงความเรียบง่าย



3

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

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

สิ่งที่คุณต้องการ:

  • วิธีโหลดโมเดล (.obj)
  • วิธีโหลดพื้นผิว
  • แสงสว่างไม่ว่าจะเป็นในฟังก์ชั่นคงที่หรือใน Shader
  • สำหรับฉากที่ซับซ้อนเล็กน้อยกว่ากาน้ำชาบนหน้าจอกราฟของฉาก
  • เครื่องมือเล็ก ๆ มากมาย (คลาสเวกเตอร์ 3d, คลาส quaternion, คลาสกล้อง, ตัวจัดการฉาก ฯลฯ )

นี่มันทำงานเยอะมากแล้ว


คุณช่วยชี้ให้ฉันดูเอกสารใด ๆ เกี่ยวกับสถาปัตยกรรมหรือส่วนประกอบพื้นฐานที่ "เครื่องมือตัวแรก" ควรมีได้หรือไม่? นี่อาจเป็นวิธีที่ดีในการทำให้มือของฉันสกปรกด้วย open gl ...
DFectuoso


4
-1 การเขียนเอ็นจิ้นเป็นวิธีในการเข้าสู่ gamedev นั้นไม่ค่อยดีนัก ตัวอย่างเช่นคุณไม่รู้ว่าจะใส่อะไรลงไปในเครื่องยนต์ Scientificninja.com/blog/write-games-not-engines
The Communist Duck

@TheCommunistDuck SADLY, Scientificninja ไม่มีอีกแล้ว web.archive link
bobobobo

2

ฉันเรียน OpenGL โดยการเขียนเกม "ง่าย": 3D Tetris !

ลองสร้างเกม / แอพง่ายๆของคุณเอง:

  • ดาวเคราะห์น้อย
  • สาบ
  • Simple scroller (คุณสามารถเรียนรู้การโหลดในแบบจำลองสำหรับผู้เล่น / ศัตรูไม่มีหรือใช้รูปแบบ Quake)
  • เครื่องกำเนิดภูมิประเทศ 3 มิติ

ทำอะไรง่ายๆที่คุณสนใจ!


2

เราทำ OpenGL (ES) ในเกม Craps ของ Orchard สำหรับ iPhone แต่มันถูกจัดการโดยโปรแกรมเมอร์ที่มีทักษะ 3D บ้า ด้วยเหตุนี้ฉันจึงได้เรียนรู้ OpenGL (ES) เพื่อที่ฉันจะได้รู้ว่าฉันกำลังพูดถึงอะไรและฉันก็สามารถเขียนโค้ดพร้อมกับทีมได้

เว็บไซต์หนึ่งที่ฉันพบว่ามีประโยชน์กับชุดบทเรียนคือบล็อกของ Jeff LaMarche: http://iphonedevelopment.blogspot.comและนี่คือลิงค์สำหรับโพสต์ OpenGL ของเขา: http://iphonedevelopment.blogspot.com/2009/05/ OpenGL ES-จากพื้นดินขึ้น-ตาราง of.html

และจาก OpenGL.org มีลิงค์ทั้งสองนี้ที่มีประโยชน์: http://www.opengl.org/code/และ http://www.opengl.org/resources/features/

วิธีที่ดีที่สุดดังกล่าวข้างต้นหลายครั้ง กระโดดเข้าไปทำสิ่งเล็ก ๆ ที่น่าสนใจและพยายามหาทาง มันคือทั้งหมดที่เกี่ยวกับการเข้าใจฉากกล้องและวัสดุ (เฉดสี) เมื่อคุณเข้าใจแนวคิดเหล่านี้คุณสามารถเริ่มมองหาเครื่องยนต์ฟิสิกส์, การตรวจจับการชน, ผลกระทบของอนุภาคและสิ่งที่คล้ายกัน Woot! (^_^)

ขอให้โชคดีกับความพยายามทั้งหมดของคุณเควิน


2

ไม่มีใครพูดถึงคู่มือการเขียนโปรแกรม OpenGLฉันไม่มีรุ่นนี้ แต่รุ่นเก่าค่อนข้างดี


1
กรุณาบอกฉันเพิ่มเติมเกี่ยวกับเรื่องนี้ ฉันสงสัยว่ามันดีกว่าหรือแตกต่างจาก super bible และถ้ามันคุ้มค่ากับเวลาที่จะอ่านหนังสือเล่มใหญ่ (ไม่มีความผิด แต่ถ้าใช้เวลาอ่านหนังสือมากกว่า 20 ชั่วโมงฉันอยากแน่ใจว่ามันคุ้มค่า =)
DFectuoso


2

http://www.opengl-tutorial.org/

มีบทช่วยสอนสำหรับ 'ทันสมัย' OpenGL (3.0 / 4.0 core เช่นไม่มีสิ่งล้าสมัย (เช่น glBegin / glEnd) ถูกสอน) แม้ว่าแบบฝึกหัดจะใช้เฉดสีพื้นฐานมีการอธิบายอย่างละเอียดโดยสร้างพื้นฐานทางคณิตศาสตร์ที่แข็งแกร่งไปพร้อมกัน ข้อความถูกปัดเศษอย่างดีด้วยโค้ดตัวอย่าง * และการแสดงภาพที่เป็นประโยชน์

บทเรียนระดับกลางครอบคลุมสิ่งที่ต้องการเช่นการใช้งานของQuaternionsหรือlightmaps

. * glmใช้เป็นห้องสมุดคณิตศาสตร์


1

ทราบเพียงวิธีที่ดีที่สุดที่จะเรียนรู้ OpenGL จะมุ่งเน้นงาน พยายามที่จะทำอะไรบางอย่าง (เช่นเพิ่มคุณสมบัติที่จะเล่นเกมของคุณ) แล้วเงยหน้าขึ้นมองสิ่งที่จะต้องทำอย่างนั้น

คู่มือและแบบฝึกหัดนั้นน่าเบื่อจริง ๆ โดยไม่มีบริบทมากขึ้น - นั่นคือบางสิ่งที่นอกเหนือจากบทช่วยสอนที่คุณต้องการบรรลุด้วยตัวคุณเอง


-1

เริ่มต้นด้วย NeHe เพื่อรับสามเหลี่ยมแรกของคุณอย่างรวดเร็วบนหน้าจอ ทำแบบฝึกหัดเริ่มต้นที่นั่นเพื่อทำความเข้าใจแนวคิดพื้นฐานของการเขียนโปรแกรม 3D ถ้าตามที่คุณพูดถึง OpenGL ES คุณจะรู้พื้นฐานของการเขียนโปรแกรมสามมิติ (สิ่งที่เป็นเมทริกซ์สิ่งที่พวกเขาใช้สำหรับวิธีการฝึกอบรมต่าง ๆ ที่ใช้ในการฉายภาพบนจอจุดยอดคืออะไร ฯลฯ ) ถ้าอย่างนั้นฉันขอแนะนำให้คุณไม่ต้องเสียเวลากับ NeHe เพราะมันอาจทำให้คุณช้าลง (โดยการสอนสิ่งที่คุณต้อง "ไม่เข้าใจ" ในภายหลัง)

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


NeHe ล้าสมัยแล้ว นอกจากนี้แม้ว่าการสร้างงานศิลปะนั้นง่ายกว่าและคุณมักจะจัดการกับงานที่มีพื้นผิวเป็นส่วนใหญ่ แต่ก็มีหลายมุม (เช่นเวกเตอร์ครอสโปรดัก) ซึ่งทำให้การเขียนเกม 2D ก่อนที่จะเขียนเกม 3 มิติยากขึ้น เกมที่มีกราฟิก 3D แต่การเล่นเกม 2D (เช่น Pong, Breakout, ... ) อาจจะง่ายกว่าเกม 2D / 3D แท้ๆ
Exilyth

-4

ดีฉันได้รับการบอกเล่าซ้ำแล้วซ้ำอีกว่าบทเรียนของ nehe นั้นดีที่สุดฉันเดาว่าพวกเขาจะเหมาะกับคุณเช่นกัน! http://nehe.gamedev.net/ ฉันซื้อหนังสือสีแดง ...


ดูเหมือนว่าจะเป็นกลุ่มก้อนสนุก ๆ จากศูนย์ไปยังสถานที่ที่ยอดเยี่ยมขอบคุณ!
DFectuoso

2
ฉันต้องไม่เห็นด้วยอย่างยิ่ง ใช่บทเรียนของ NeHe อยู่ที่นั่นมานาน แต่พวกเขาไม่เคยมีสไตล์ที่ดีมากและตอนนี้พวกเขาล้าสมัยไปแล้ว
Andreas

8
-1 Nehe ล้าสมัยเกินไป
Axel Gneiting

7
-1 เรียนรู้สิ่งเลวร้ายทุกประเภทจาก Nehe!
Gabriel Isenberg

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