OpenGL 1.x และ 2.x แตกต่างกันอย่างไร?


13

มีบทช่วยสอนที่ดีที่แสดงความแตกต่างระหว่าง OpenGL 1 * และ 2 * หรือไม่?

มันจะมีประโยชน์มากหากรู้ว่าฟังก์ชั่นใดที่ฉันไม่ควรเรียก (เช่น glBegin () ฉันถือว่า)


1
ให้ฉันใช้ถ้อยคำของคุณใหม่ ความแตกต่างระหว่างการเรนเดอร์ฟังก์ชั่นคงที่และ Shaders คืออะไร?
EnabrenTane

3
นั่นเป็นคำถามที่แตกต่างอย่างสิ้นเชิงแม้ว่า
Jari Komppa

คำตอบ:


11

OpenGL.org การเริ่มต้นหน้ามีภาพรวมที่มีมากมายของการเชื่อมโยงการสอนต่างๆ

ในระยะสั้น OpenGL 2.0 อยู่ระหว่างฟังก์ชั่นคงที่ (1.x) และโลกที่ตั้งโปรแกรมได้อย่างเต็มที่ (2.x +) คุณยังสามารถใช้ทุกสิ่งที่ OpenGL 1.x มีได้ในขณะที่เพิ่มเฉดสี ก้าวไปข้างหน้า (3.x +) ระบบฟังก์ชั่นคงที่เก่า ๆ ทุกประเภทเริ่มที่จะถูกปฏิเสธแม้ว่ามันจะเป็นการดีกว่าถ้าคุณเริ่มต้นใหม่ทั้งหมดแทนที่จะผสมกันทั้งสองโลก

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


ฉันหาบทช่วยสอนเฉพาะเวอร์ชั่นไม่พบ (ยกเว้น 3.0)
t123

มีลิงก์มากมายจากหน้านั้นภายใต้ "บทแนะนำและวิธีการใช้แนวทาง" แต่โดยทั่วไปคุณมีตัวเลือกระหว่าง OpenGL 1.x และ "สิ่งอื่น"
Jari Komppa

@ tm1rbrt: คุณจะไม่พบบทช่วยสอนที่เฉพาะเจาะจงสำหรับ 2.1 เพราะบทสนทนา 1.x ที่ถูกต้องทั้งหมดยังคงเป็นบทเรียน 2.1 ที่ถูกต้อง เหตุผลเดียวที่มีการหยุดพักที่ 3.x คือเพราะนั่นคือสิ่งที่ API ถูกลบออก หากคุณกำลังมองหาบทช่วยสอนแบบ 2.1 ที่ใช้กับ Shader บทเรียนของ Lighthouse3d นั้นมีประโยชน์ อย่างไรก็ตามคุณควรทราบว่าฮาร์ดแวร์ 3.x เปิดตัวมาตั้งแต่ปี 2549 และแม้ตอนนี้จะถูกฝังลงในเมนบอร์ดและแม้แต่ซีพียู ดังนั้นอนาคตไม่ได้อยู่ในโลก 2.x; แบบฝึกหัดในอนาคตโดยทั่วไปจะเน้นที่ 3.x ขึ้นไป
Nicol Bolas

3

รุ่น OpenGL โดยและขนาดใหญ่ไม่เหมือนกับรุ่น Direct3D รหัสเดิมของคุณยังใช้งานได้กับเวอร์ชันใหม่ (ยกเว้นหนึ่งข้อ) ดังนั้น OpenGL v1.4 จะทำงานได้ดีภายใต้ OpenGL 2.1 รุ่น OpenGL เป็นการเพิ่มเติมไม่ใช่การลบ

OpenGL 2.0 และ 2.1 เพิ่มเฉดสีในภาษา OpenGL Shading Language พวกเขายังเพิ่มคุณสมบัติอื่น ๆ อีกหลายอย่างเช่นพื้นผิวที่เป็นจุดลอยตัวพื้นผิวที่ไม่ได้ใช้กำลังของสองและอื่น ๆ รายการเต็มรูปแบบที่มีอยู่ในOpenGL 2.1 สเปคตัวเอง เพียงดูที่ส่วน "เวอร์ชั่น" พวกเขาจะบอกคุณว่ามีการเปลี่ยนแปลงอะไรจากรุ่นก่อนหน้า

ข้อยกเว้นเฉพาะกฎเกี่ยวกับการเปลี่ยนแปลง API คือ OpenGL 3.1 (ใช่, 3.1, ไม่ใช่ 3.0) ใน OpenGL 3.0 API จำนวนหนึ่งถูกกำหนดเป็น "เลิกใช้แล้ว" ซึ่งหมายความว่า ARB ซึ่งเป็นคณะกรรมการที่ดูแล OpenGL สามารถลบฟังก์ชั่นเหล่านี้ออกจากรุ่นที่ใหม่กว่าได้ การลบนี้เกิดขึ้นใน OpenGL 3.1 ข้อมูลจำเพาะ 3.0 มีรายการใหญ่ของสิ่งที่คัดค้านในนั้นและข้อมูลจำเพาะ 3.1 ถูกลดลงตามลำดับ

โปรดทราบว่าคุณไม่ต้องกังวล (อย่างน้อยใน Windows และ Linux MacOSX นั้นแตกต่างกัน) คุณสามารถทำงานได้ดีในโหมด " ความเข้ากันได้ " ซึ่งคุณสมบัติที่ถูกลบไปก่อนหน้านี้ทั้งหมดกลับมา การติดตั้ง OpenGL ไม่จำเป็นต้องรองรับบริบทความเข้ากันได้ (และ Mac OS X Lion ไม่รองรับมันรองรับทั้ง 2.1 หรือ 3.2 คอร์ตามที่คุณร้องขอ) แต่ทั้งหมดยังคงทำอยู่ เพียงเพื่อย้อนกลับเข้ากันได้กับแอปพลิเคชันรุ่นเก่า


คุณสามารถเพิ่มอะไรก็ได้เกี่ยวกับ OpenGL 4 *?
Kromster

@ Krom: ไม่มีอะไรจะพูด เช่นเดียวกับจาก 1.x ถึง 2.x ไม่มีอะไรถูกลบออก
Nicol Bolas

0

ฉันเชื่อว่ามีบทเรียนสำหรับ opengl 1.x และ 2.x แต่มีแนวโน้มมากที่สุดที่จะไม่แสดงบทเรียนว่าพวกเขาแตกต่างกับคุณสมบัติหรือใช้งานง่ายอย่างไรเป็นต้น

อาจเป็นการดีที่สุดที่จะค้นหาบทช่วยสอนสำหรับรุ่น OpenGL ที่เฉพาะเจาะจงค้นหาแบบฝึกหัดที่คล้ายกันและเปรียบเทียบด้วยตัวคุณเอง


ใครจะเป็นผู้สุ่มเลือก downvoting ความคิดเห็นของฉัน
LizardGamer

ทำไมต้องลงคะแนนที่นี่ ไม่ใช่คำตอบที่ยอดเยี่ยม แต่เป็น downvotes ไม่แน่ใจ. คำถาม trully ต้องการบางสิ่งบางอย่างที่ไม่ปกติ ... การสอนเพื่อแสดงความแตกต่างซึ่งส่วนใหญ่ไม่ใช่บทเรียนที่ ...
Notabene

@LizardGamer ฉันเห็นว่าคุณเข้าร่วม gamedev.SE เมื่อไม่กี่วันที่ผ่านมาดังนั้นฉันอยากจะพูดว่า "ยินดีต้อนรับ!" อย่างไรก็ตามคุณควรอ่านคำถามที่พบบ่อยที่นี่: gamedev.stackexchange.com/faqคำตอบนี้เป็นตัวอย่างที่สมบูรณ์แบบของคำตอบที่คุณไม่ต้องการให้ พยายามที่จะเจาะจงและสร้างสรรค์มากขึ้นทั้งกับคำถามและคำตอบของคุณ คำถามที่พบบ่อยควรช่วยให้คุณตระหนักถึงวัตถุประสงค์ของเว็บไซต์นี้และเนื้อหาที่เรากำลังมองหา โชคดี!
Amplify91

@notabene คำตอบนี้ไม่ได้ตอบคำถาม ข้อเสนอแนะเดียวที่ให้คือโดยทั่วไปคือ "ค้นหาคำตอบ" เห็นได้ชัดว่า OP กำลังทำเช่นนั้นโดยถามคำถามที่นี่
Amplify91

@ Amplify91 ขอบคุณสำหรับการต้อนรับที่ฉันได้รับและฉันได้อ่านคำถามที่พบบ่อยแล้วฉันไม่พบว่ามันเป็นตัวอย่างของสิ่งที่จะไม่ถามหรือไม่? บวกกับมันจะตอบคำถามเพราะฉันไม่ได้เห็นแบบฝึกหัดใด ๆ ที่เกี่ยวข้องกับการเปรียบเทียบรุ่นของ opengl
LizardGamer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.