OpenGL ES และ OpenGL แตกต่างกันอย่างไร?


30

Android ใช้ OpenGL ES ความแตกต่างระหว่างมันกับ OpenGL คืออะไร


1
ลิงค์นี้มีคำอธิบายที่ดีงาม: wiki.maemo.org/OpenGL-ES
Winder

คำตอบ:


13

OpenGL ES (ระบบสมองกลฝังตัว) เป็น OpenGL รุ่นที่ไม่ใช้งาน มีความแตกต่างมากมายระหว่างสองสิ่งนี้และถ้าคุณต้องการเข้าไปดูรายละเอียดคุณสามารถอ่านกระดาษข้อมูลจำเพาะ 128 เล่มนี้ได้ แต่ ES เป็นชุดย่อยของ OpenGL ดังนั้นแอป ES ทั้งหมดทำงานบนระบบที่ไม่ใช่ของ ES แต่ไม่ใช่ในทางตรงกันข้าม

ไม่มีที่ใดที่หนึ่งที่คุณสามารถกำหนดสิ่งที่อยู่ใน ES และสิ่งที่ไม่ได้เป็น แม้แต่คำจำกัดความเดียวคือ "OpenGL-ES ก็เหมือนกับ OpenGL แต่ไม่มีอะไรมากมายตัวอย่างเช่นไม่มี glBegin หรือ glEnd"


5
ES ไม่ใช่ชุดย่อยของ OpenGL ดังนั้นการอ้างสิทธิ์ของคุณว่าแอป ES ทั้งหมดทำงานบนระบบที่ไม่ใช่ ES ไม่ใช่เรื่องจริง
Jari Komppa

5
@JariKomppa - เป็นของ OpenGL 4.1
DMan

บทสรุปที่ดีของการเปลี่ยนแปลง / ความแตกต่างจะดี
bobobobo

19

อนิจจาไม่ใช่หนึ่งในคำตอบที่สมบูรณ์และถูกต้องทั้งหมด จริง ๆ แล้ว OpenGL-ES ทำสองสิ่งที่ OpenGL ทำไม่ได้:

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

2) ให้ส่วนต่อประสานกับโปรแกรมจัดการหน้าต่าง (และฮาร์ดแวร์กราฟิกดั้งเดิม) ของแพลตฟอร์มมือถือ ส่วนนี้ของ OpenGL-ES หรือที่รู้จักกันในชื่อ EGL นั้นคล้ายกับ GLUT บนเดสก์ท็อปเป็นอย่างมาก ยกเว้นว่าไม่มีวิธีการอำนวยความสะดวกเหล่านั้นที่ไม่จำเป็นอย่างเคร่งครัดสำหรับส่วนต่อประสานนั้น ดังนั้นจึงไม่มี API สำหรับการวาดรูปทรงหลายเหลี่ยมหรือทรงกลม (เช่นเดียวกับ GLUT) แต่มีตัวอย่างเช่น API ที่สอดคล้องกับ init () ของ GLUT และ DisplayFunc () และการเรียกกลับของ ReshapeFunc ()


2
EGL ไม่ได้เป็นส่วนหนึ่งของ OpenGL ES มันเป็นสิ่งที่แยกจากกัน ดูข้อมูลจำเพาะ มันไม่ได้เป็นส่วนหนึ่งที่จำเป็นของ OpenGL ES และเป็นที่กล่าวถึงแทบจะไม่ยกเว้นที่จะกล่าวว่ามันอาจจะมีอยู่ในระบบของคุณ แต่อย่างอื่นตั้งค่าหน้าต่าง ฯลฯ อยู่นอกขอบเขตของ OpenGL ES ข้อมูลจำเพาะ
G-Man

7

มีสองเวอร์ชัน OpenGL ES บน Android:

  • OpenGL ES 1.x (1.0 หรือ 1.1): เซตย่อยของ OpenGL 1.5 โดยไม่ต้องใช้คำสั่งทันที
    • ไม่มี glBegin / glEnd
    • ไม่รองรับ Quad หรือ Polygon
  • OpenGL ES 2.0: เซตย่อยของ OpenGL 3.X โดยไม่ต้องมีขั้นตอนคงที่
    • จุดสุดยอดเฉดสี
    • ส่วนแตก
    • ไม่สามารถใช้เฉดเรขาคณิตได้

คำเตือน OpenGL ES 2.0 เข้ากันไม่ได้กับ OpenGL ES 1.X!

โทรศัพท์ Android เกือบทุกเครื่องมี OpenGL 1.X GPU และส่วนใหญ่มี 2.0 OpenGL ES 2.0 นั้นสามารถใช้งานได้กับ Android 2.x หรือใหม่กว่าเท่านั้น

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