อะไรคือความแตกต่างระหว่าง OpenGL ES และ OpenGL?
อะไรคือความแตกต่างระหว่าง OpenGL ES และ OpenGL?
คำตอบ:
ความแตกต่างที่สำคัญสองประการระหว่าง OpenGL ES และ OpenGL คือการลบ glBegin ... glEnd การเรียกใช้ความหมายสำหรับการแสดงผลแบบดั้งเดิม (ในความโปรดปรานของอาร์เรย์จุดยอด) และการแนะนำชนิดข้อมูลจุดคงที่สำหรับพิกัดจุดยอดและแอตทริบิวต์เพื่อการสนับสนุนที่ดีขึ้น ความสามารถในการคำนวณของโปรเซสเซอร์แบบฝังซึ่งมักไม่มี FPU
ดูที่นี่: OpenGL_ES
OpenGL ES คือ opengl api สำหรับระบบฝังตัว มันง่ายกว่า opengl ปกติในแง่ของจำนวนฟังก์ชัน api แต่อาจใช้งานยากกว่าเนื่องจากคุณจะต้องใช้บัฟเฟอร์จุดยอดและเขียนเฉดสีเพิ่มเติม
เมื่อคุณใช้ opengl ปกติคุณสามารถใช้ glBegin และ glEnd เพื่อปิดล้อมไพรเมอร์เรขาคณิตที่คุณต้องการวาด แต่เมื่อใช้ Opengl ES คุณจะต้องใช้บัฟเฟอร์จุดยอด ฉันเดาว่านี่เป็นปัญหาด้านประสิทธิภาพ
ปัจจุบันมี Opengl ES สองเวอร์ชันโดยเวอร์ชัน 1.1 สามารถรองรับเฉพาะไปป์ไลน์การแสดงผลคงที่ในขณะที่เวอร์ชัน 2.0 รองรับ glsl shader อย่างไรก็ตามมันไม่มีท่อส่งการแสดงผลแบบตายตัว กล่าวอีกนัยหนึ่งคุณจะต้องเขียน shader ของคุณเองสำหรับทุกสิ่ง
Opengl ES ส่วนใหญ่จะใช้กับโทรศัพท์มือถือและเว็บ (webgl) ตามข้อมูลจำเพาะไดรเวอร์ opengl บนเดสก์ท็อปของคุณสามารถรองรับ opengl es apis ทั้งหมดได้
เช่นเดียวกับการเพิ่มว่า OpenGL 3.3 และ OpenGL ES 2.0 นั้นส่วนใหญ่ทำงานร่วมกันได้โดยใช้คุณสมบัติย่อยของ OpenGL 3.3 เอ็นจิ้น C ++ ที่กำหนดเองของฉันใช้การเรียก API เดียวกันโดยมีคำจำกัดความบางประการสำหรับ Android / IOS / Windows / OSX / Linux
ความแตกต่างที่สำคัญ ได้แก่ :
นอกจากนี้ยังมีความแตกต่างอื่น ๆ อีกมากมาย แต่ครอบคลุมประเด็นสำคัญหลายประการ
OpenGL ES หมายถึงไลบรารีกราฟิกแบบเปิดสำหรับระบบฝังตัว (OpenGL ES หรือ GLES) เป็นชุดย่อยของอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันการแสดงผลกราฟิกคอมพิวเตอร์ OpenGL (API) สำหรับการแสดงผลกราฟิกคอมพิวเตอร์ 2D และ 3D เช่นที่ใช้โดยวิดีโอเกมโดยปกติจะเร่งด้วยฮาร์ดแวร์โดยใช้ หน่วยประมวลผลกราฟิก (GPU) ออกแบบมาสำหรับระบบฝังตัวเช่นสมาร์ทโฟนแท็บเล็ตคอมพิวเตอร์คอนโซลวิดีโอเกมและพีดีเอ
OpenGL | เว็บไซต์อย่างเป็นทางการของ ES: http://www.opengl.org/
คุณสามารถรับข้อมูลเพิ่มเติมได้จาก wiki: http://en.wikipedia.org/wiki/OpenGL_ES
ตรวจสอบภาพรวม OpenGL ES ที่นี่: http://www.khronos.org/opengles/
กล่าวโดยย่อ ES เป็นส่วนย่อยของ Open GL สำหรับ "ระบบฝังตัว" ความแตกต่างเฉพาะจะขึ้นอยู่กับเวอร์ชันและชุดคุณลักษณะที่คุณกำลังเปรียบเทียบ
รีจิสทรี OpenGL ES มีความแตกต่างของ API โดยละเอียดระหว่าง OpenGL ES และ OpenGL เวอร์ชันที่เกี่ยวข้อง:
อย่างไรก็ตามไม่มีเอกสารที่มีความแตกต่างสำหรับ OpenGL ES 3.0
ฉันคิดว่าคุณจะได้รับคำตอบที่ดีกว่าถ้าคุณถามว่า "OpenGL และ OpenGL ES ต่างกันอย่างไร"
มีความแตกต่างที่ลึกซึ้งระหว่าง OpenGL ES 1.1 และ ES 2.0, OpenGL 1.5 และ 2.0 และ OpenGL 3.0 และ 4.0
ตามที่คนอื่นอธิบาย ES ถูกเขียนขึ้นสำหรับระบบฝังตัว นอกจากนี้ยังแสดงถึง "การทำความสะอาดบ้าน" ครั้งแรกของข้อกำหนด GL ตั้งแต่เริ่มก่อตั้ง OpenGL มี a) หลายวิธีในการทำสิ่งเดียวกัน (เช่นคุณสามารถวาดรูปสี่เหลี่ยม / สี่เหลี่ยมผืนผ้าได้สองวิธีที่แตกต่างกันและทำให้ภาพพิกเซลแตกต่างกันสองวิธี ฯลฯ ) ES นั้นง่ายกว่า OpenGL โดยมีคุณสมบัติน้อยกว่าเหมือนคำชี้แจงทั่วไปเนื่องจากออกแบบมาสำหรับฮาร์ดแวร์ที่มีความซับซ้อนน้อยกว่า
ฉันขอให้คุณอย่ามองว่า OpenGL ES 1.1 เป็นอดีตและไม่ได้แสดงถึงวิธีที่ OpenGL หรือ OpenGL ES กำลังก้าวไปในทางสถาปัตยกรรมในอนาคต
ความแตกต่างหลักระหว่างทั้งสองคือ OpenGL ES สร้างขึ้นสำหรับระบบฝังตัวเช่นสมาร์ทโฟนในขณะที่ OpenGL เป็นระบบที่ใช้กับเดสก์ท็อป ในระดับการเข้ารหัส OpenGL ES ไม่รองรับฟังก์ชันฟังก์ชันคงที่เช่น glBegin / glEnd เป็นต้น OpenGL สามารถรองรับไปป์ไลน์ฟังก์ชันคงที่ (โดยใช้โปรไฟล์ที่เข้ากันได้)
คำตอบที่ทันสมัยสำหรับ ES 3.0 เมื่อเทียบกับ OpenGL 4.6 นั้นแตกต่างจากคำตอบที่ยอมรับ ตอนนี้สิ่งที่คงที่ไปป์ไลน์ทั้งหมดหายไปแล้ว
ES สำหรับ EMBEDDED SYSTEMS นั้นแข็งแกร่งน้อยกว่ามาก
OpenGL ES เป็นเพียง OpenGL api สำหรับระบบฝังตัว (OpenGL ES หมายถึง OpenGL Embedded Systems) ดังนั้นจึงเป็นชุดย่อยของ OpenGL และใช้กันอย่างแพร่หลายในโทรศัพท์มือถือและระบบ VR บางระบบจึงออกแบบมาสำหรับฮาร์ดแวร์ที่มีความซับซ้อนน้อย OpenGL ES มีข้อกำหนดและฟังก์ชันน้อยกว่า OpenGL ให้คิดว่าคุณใช้สิ่งที่คุณต้องการสำหรับระบบนั้นเพราะถ้าเราไม่ต้องการฟังก์ชั่นในการทำงานทั้งหมดของเราหรือฮาร์ดแวร์ไม่สามารถจัดการกับมันได้ดังนั้นก็ไม่มีความหมายที่จะเพิ่ม ฟังก์ชั่นนั้น แต่ทำให้การใช้งาน API นี้ยากขึ้นเนื่องจากต้องเขียน Shaders เพิ่มเติมและโค้ดที่ซับซ้อนเพื่อให้ง่ายขึ้นเนื่องจาก OpenGL ES ไม่ได้ให้ Shaders ในไปป์ไลน์กราฟิกเป็น OpenGL OpenGL ES เวอร์ชันล่าสุดคือ 3.2 ตอนนี้สามารถให้การสนับสนุน Tessellation สำหรับรายละเอียดรูปทรงเรขาคณิตเพิ่มเติมเฉดสีเรขาคณิตใหม่ ดังนั้นฉันแนะนำให้คุณเริ่มเรียนรู้หรือใช้ OpenGL ES 3.0+ (ในกรณีที่เป็นภาษาเป้าหมายของคุณ) เพราะในตอนนี้และรุ่นต่อไปจะไม่ใช้เวอร์ชันเก่าที่มีฮาร์ดแวร์และกราฟิกการ์ดที่ทรงพลังกว่าและหากเป้าหมายของคุณคือ OpenGL เริ่มต้นด้วย v3 3+ หรือ 4.0+ หากคุณมีเวลามากขึ้นก็ไม่มีปัญหาในการดูเวอร์ชันเก่าอย่างรวดเร็วเพื่อทำความเข้าใจมากขึ้นว่าสิ่งต่างๆได้รับการพัฒนาอย่างไรและทำไม คุณสามารถตรวจสอบลิงค์นี้เพื่อดูรายละเอียดเพิ่มเติม:https://en.wikipedia.org/wiki/OpenGL_ES
บอกง่ายๆว่า opengl เป็นเวอร์ชันเดสก์ท็อปและ opengl es สำหรับระบบฝังตัวเช่นโทรศัพท์มือถือซึ่งมีข้อ จำกัด ด้านหน่วยความจำและประสิทธิภาพมากกว่าคอมพิวเตอร์ opengl es จะใช้งานยากกว่า
OpenGLเป็น API กราฟิก 2 มิติและ 3 มิติที่นำแอปพลิเคชันหลายพันรายการมาสู่แพลตฟอร์มคอมพิวเตอร์ที่หลากหลาย
OpenGL ES เป็นชุดย่อยที่กำหนดไว้อย่างดีของ OpenGL บนเดสก์ท็อป
OpenGL® ES เป็น API ข้ามแพลตฟอร์มแบบปลอดค่าลิขสิทธิ์สำหรับกราฟิก 2D และ 3D เต็มรูปแบบบนระบบฝังตัว - รวมถึงคอนโซลโทรศัพท์เครื่องใช้และยานพาหนะ ประกอบด้วยชุดย่อยที่กำหนดไว้อย่างดีของ OpenGL บนเดสก์ท็อป, ...
ดูลิงค์นี้.
ปล
WebGL แชร์ข้อมูลจำเพาะกับ OpenGL ES กล่าวคือหากคุณได้เรียนรู้ OpenGL บนเดสก์ท็อปคุณสามารถเรียนรู้สิ่งอื่น ๆ (OpenGL ES, WebGL)