อ่าน 13 นาที
โอเพนกลู อีเอส
OpenGL สำหรับระบบฝังตัว ( OpenGL ESหรือGLES ) เป็นส่วนย่อยของ อินเทอร์เฟซการเขียน โปรแกรมแอปพลิเคชัน (API) สำหรับการเรนเดอ...
โอเพนกลู อีเอส
| โอเพนกลู อีเอส | |
|---|---|
| นักพัฒนา | กลุ่มโครโนส |
| ปล่อย | 28 กรกฎาคม 2546 |
| เวอร์ชันเสถียร | 3.2 [ 1 ] |
| ผู้สืบทอด | วัลคาน |
| พิมพ์ | APIกราฟิก 3 มิติ |
| ใบอนุญาต |
|
| เว็บไซต์ | khronos.org/opengles |
OpenGL สำหรับระบบฝังตัว ( OpenGL ESหรือGLES ) เป็นส่วนย่อยของ อินเทอร์เฟซการเขียน โปรแกรมแอปพลิเคชัน (API) สำหรับการเรนเดอ ร์กราฟิกคอมพิวเตอร์OpenGLสำหรับการแสดงผลกราฟิกคอมพิวเตอร์ 2 มิติและ 3 มิติ เช่นที่ใช้ในวิดีโอเกม โดยทั่วไปจะใช้การเร่งความเร็วด้วยฮาร์ดแวร์โดยใช้หน่วยประมวลผลกราฟิก (GPU) OpenGL ES ได้รับการออกแบบมาสำหรับระบบฝังตัวเช่น สมาร์ทโฟน แท็บเล็ต คอมพิวเตอร์ วิดีโอเกมคอนโซล และ PDA OpenGL ES เป็น "API กราฟิก 3 มิติที่ใช้งานอย่างแพร่หลายที่สุดในประวัติศาสตร์"
API นี้รองรับหลายภาษาและหลายแพลตฟอร์ม OpenGL ES บริหารจัดการโดยKhronos Group ซึ่งเป็นกลุ่มเทคโนโลยีที่ไม่แสวงหาผลกำไร ส่วนVulkanซึ่งเป็น API รุ่นใหม่จาก Khronos ถูกสร้างขึ้นเพื่อไดรเวอร์ที่มีประสิทธิภาพสูงและใช้งานง่ายยิ่งขึ้นสำหรับอุปกรณ์พกพาและเดสก์ท็อป
เวอร์ชัน
ปัจจุบันมีข้อกำหนด OpenGL ES หลายเวอร์ชัน OpenGL ES 1.0 ถูกกำหนดขึ้นโดยอ้างอิงจากข้อกำหนด OpenGL 1.3, OpenGL ES 1.1 ถูกกำหนดโดยอ้างอิงจากข้อกำหนด OpenGL 1.5 และ OpenGL ES 2.0 ถูกกำหนดโดยอ้างอิงจากข้อกำหนด OpenGL 2.0 นั่นหมายความว่า ตัวอย่างเช่น แอปพลิเคชันที่เขียนขึ้นสำหรับ OpenGL ES 1.0 ควรจะสามารถพอร์ตไปยัง OpenGL 1.3 บนเดสก์ท็อปได้อย่างง่ายดาย เนื่องจาก OpenGL ES เป็นเวอร์ชันที่ลดทอนฟังก์ชันการทำงานลง ดังนั้นในทางกลับกัน อาจจะใช้ได้หรือไม่ก็ได้ ขึ้นอยู่กับคุณสมบัติเฉพาะที่ใช้งาน
OpenGL ES มาพร้อมกับภาษาแรเงา เวอร์ชันของตัวเอง (OpenGL ES SL) ซึ่งแตกต่างจากOpenGL SL [ 3 ]
เวอร์ชัน 1.0 และ 1.1 ต่างก็มี โปรไฟล์ ทั่วไป (CM) และ โปรไฟล์ ทั่วไปแบบเบา (CL) โดยความแตกต่างอยู่ที่โปรไฟล์ทั่วไปแบบเบา จะรองรับเฉพาะข้อมูล แบบจุดคงที่ (fixed-point) เท่านั้น ไม่ใช่ ข้อมูลแบบ จุดลอยตัว (floating point)ในขณะที่โปรไฟล์ทั่วไปจะรองรับทั้งสองแบบ
OpenGL ES 1.0
OpenGL ES 1.0 เปิดตัวสู่สาธารณะเมื่อวันที่ 28 กรกฎาคม 2546 OpenGL ES 1.0 ใช้พื้นฐานจาก API ของ OpenGL 1.3 ดั้งเดิม โดยมีการตัดฟังก์ชันการทำงานออกไปมากและเพิ่มฟังก์ชันใหม่เล็กน้อย ความแตกต่างที่สำคัญอย่างหนึ่งระหว่าง OpenGL และ OpenGL ES คือ OpenGL ES ได้ยกเลิกการใช้เครื่องหมายวงเล็บปิดในการเรียกใช้ไลบรารี OpenGL glBeginความglEndแตกต่างที่สำคัญอื่นๆ คือ ความหมายของการเรียกใช้ฟังก์ชันการเรนเดอร์แบบดั้งเดิมถูกเปลี่ยนแปลงไปใช้แถวจุดยอดแทน และ มีการนำชนิดข้อมูล จุดคงที่มาใช้สำหรับพิกัดจุดยอด นอกจากนี้ยังมีการเพิ่มแอตทริบิวต์เพื่อรองรับความสามารถในการคำนวณของโปรเซสเซอร์ฝังตัวได้ดียิ่งขึ้น ซึ่งมักจะขาดหน่วยประมวลผลจุดลอยตัว (FPU) ฟังก์ชันและส่วนประกอบการเรนเดอร์อื่นๆ อีกมากมายถูกลบออกในเวอร์ชัน 1.0 เพื่อสร้างอินเทอร์เฟซที่มีน้ำหนักเบา รวมถึง:
- รูปทรงพื้นฐานสำหรับการเรนเดอร์แบบสี่เหลี่ยมและรูปหลายเหลี่ยม;
- การสร้างพื้นผิว, เส้น และจุดประรูปหลายเหลี่ยม;
- โหมดโพลีกอนและการเรนเดอร์โพลีกอนแบบลดรอยหยักไม่ได้รับการสนับสนุน แม้ว่าการเรนเดอร์โดยใช้มัลติแซมเปิลยังคงเป็นไปได้ (แทนที่จะใช้แฟรกเมนต์ขอบอัลฟา)
ARB_Imageการดำเนินการกับคลาสพิกเซล, บิตแมป และพื้นผิว 3 มิติ ไม่ได้รับการสนับสนุน- โหมดการวาดภาพทางเทคนิคหลายโหมดถูกตัดออกไป รวมถึงโหมดบัฟเฟอร์ด้านหน้าและบัฟเฟอร์สะสม
- การดำเนินการกับบิตแมปสำหรับการคัดลอกพิกเซลทีละพิกเซล การประเมินผล และการเลือกโดยผู้ใช้ไม่ได้รับอนุญาต
- รายการแสดงผลและข้อเสนอแนะถูกลบออก เช่นเดียวกับการดำเนินการ push และ pop สำหรับคุณลักษณะสถานะ
- และพารามิเตอร์วัสดุบางส่วนถูกลบออก รวมถึง พารามิเตอร์ ด้านหลังและระนาบตัดที่ผู้ใช้กำหนดเอง
เวอร์ชันจริงคือ 1.0.0.2 [ 4 ]
| ชื่อส่วนขยาย | เรียงลำดับ #หมายเลข | รายละเอียด |
|---|---|---|
| พิกัดไบต์ OES | ส่วนขยาย OpenGL ES #4 | (เดิมคือส่วนขยาย OpenGL #291) |
| OES_compressed_paletted_texture | ส่วนขยาย OpenGL ES #6 | (เดิมคือส่วนขยาย OpenGL หมายเลข 294) |
| จุดคงที่ OES | ส่วนขยาย OpenGL ES #9 | (เดิมคือส่วนขยาย OpenGL หมายเลข 292) |
| เมทริกซ์การสอบถาม OES | ส่วนขยาย OpenGL ES #16 | (เดิมคือส่วนขยาย OpenGL หมายเลข 296) |
| OES_read_format | ส่วนขยาย OpenGL ES #17 | (เดิมคือส่วนขยาย OpenGL หมายเลข 295) |
| OES_ความแม่นยำเดี่ยว | ส่วนขยาย OpenGL ES #18 | (เดิมคือส่วนขยาย OpenGL หมายเลข 293) |
| ไม่จำเป็น | เมซา (คนขับส่วนใหญ่) | |
| OES_compressed_ETC1_RGB8_texture | ส่วนขยาย OpenGL ES #5 |
OpenGL ES 1.1
OpenGL ES 1.1 เพิ่มคุณสมบัติต่างๆ เช่น การรองรับมัลติเท็กซ์เจอร์แบบบังคับ การรองรับมัลติเท็กซ์เจอร์ที่ดีขึ้น (รวมถึงตัวรวมและ การดำเนินการเท็กซ์เจอร์ แบบดอทโปรดักต์ ) การสร้างมิปแมป อัตโนมัติ ออบ เจ็กต์บัฟเฟอร์จุดยอดการสอบถามสถานะ ระนาบตัดของผู้ใช้ และการควบคุมการเรนเดอร์จุดได้มากขึ้น[ 5 ] เวอร์ชันจริงคือ 1.1.12 [ 6 ]
| ชื่อส่วนขยาย | เรียงลำดับ #หมายเลข |
|---|---|
| OES_วาด_พื้นผิว | ส่วนขยาย OpenGL ES #7 |
| OES_matrix_get | ส่วนขยาย OpenGL ES #11 |
| อาร์เรย์ขนาดจุด OES | ส่วนขยาย OpenGL ES #14 |
| OES_point_sprite | ส่วนขยาย OpenGL ES #15 |
| ไม่จำเป็น | เมซา (สำหรับผู้ขับขี่ทุกคน) |
| อ็อบเจ็กต์เฟรมบัฟเฟอร์ OES | ส่วนขยาย OpenGL ES #10 (กลายเป็นแกนหลักใน ES 2.0) [ 7 ] |
| ภาพ OES_EGL | ส่วนขยาย OpenGL ES #23 |
| OES_EGL_image_external | ส่วนขยาย OpenGL ES #87 |
| OES_required_internalformat | ส่วนขยาย OpenGL ES # รอการกำหนด |
OpenGL ES 2.0
OpenGL ES 2.0 เปิดตัวสู่สาธารณะในเดือนมีนาคม พ.ศ. 2550 [ 8 ]โดยพื้นฐานแล้วมีพื้นฐานมาจาก OpenGL 2.0 แต่ได้กำจัด ไปป์ไลน์การเรนเดอร์ แบบฟังก์ชันคงที่ ส่วนใหญ่ออกไป และหัน มาใช้ไปป์ไลน์แบบโปรแกรมได้แทน ซึ่งเป็นการเปลี่ยนแปลงที่คล้ายกับการเปลี่ยนจาก OpenGL 3.0 ไปเป็น 3.1 [ 9 ]การควบคุมการไหลในเชเดอร์โดยทั่วไปจะจำกัดอยู่ที่การแตกสาขาไปข้างหน้าและลูป ซึ่งสามารถกำหนดจำนวนการวนซ้ำสูงสุดได้อย่างง่ายดายในระหว่างการคอมไพล์[ 10 ]คุณสมบัติการเรนเดอร์เกือบทั้งหมดของขั้นตอนการแปลงและการให้แสง เช่น การกำหนดวัสดุและพารามิเตอร์แสงที่เคยกำหนดโดย API แบบฟังก์ชันคงที่ จะถูกแทนที่ด้วยเชเดอร์ที่เขียนโดยโปรแกรมเมอร์กราฟิก ส่งผลให้ OpenGL ES 2.0 ไม่สามารถใช้งานร่วมกับ OpenGL ES 1.1 ได้ ความไม่เข้ากันบางประการระหว่าง OpenGL เวอร์ชันเดสก์ท็อปและ OpenGL ES 2.0 ยังคงมีอยู่จนถึง OpenGL 4.1 ซึ่งได้เพิ่มGL_ARB_ES2_compatibilityส่วนขยาย[ 11 ] เวอร์ชันปัจจุบันคือ 2.0.25 [ 12 ]
กลุ่ม Khronos ได้เขียนเอกสารอธิบายความแตกต่างระหว่าง OpenGL ES 2.0 และ OpenGL 2.0 ทั่วไป[ 13 ]
| ชื่อส่วนขยาย | เรียงลำดับ #หมายเลข |
|---|---|
| แผนที่ลูกบาศก์พื้นผิว OES | ส่วนขยาย OpenGL ES #20 |
| OES_texture_npot | ส่วนขยาย OpenGL ES #37 |
| OES_depth24 | ส่วนขยาย OpenGL ES #24 |
| พื้นผิวความลึก OES | ส่วนขยาย OpenGL ES #44 |
| OES_element_index_uint | ส่วนขยาย OpenGL ES #26 |
| OES_fbo_render_mipmap | ส่วนขยาย OpenGL ES #27 |
| OES_get_program_binary | ส่วนขยาย OpenGL ES #47 |
| OES_mapbuffer | ส่วนขยาย OpenGL ES #29 |
| สเตนซิลความลึกที่บรรจุ OES | ส่วนขยาย OpenGL ES #43 |
| โออีเอส_อาร์จีบี8_อาร์จีบีเอ8 | ส่วนขยาย OpenGL ES #30 |
| OES_stencil8 | ส่วนขยาย OpenGL ES #33 |
| OES_vertex_half_float | ส่วนขยาย OpenGL ES #38 |
| เพิ่มเติม | ใน MESA (สำหรับผู้ขับขี่ทุกคน) |
| ภาพ OES_EGL | ส่วนขยาย OpenGL ES #23 (แตกต่างจากเวอร์ชัน 1.1) |
| OES_EGL_image_external | ส่วนขยาย OpenGL ES #87 (แตกต่างจากเวอร์ชัน 1.1) |
| OES_texture_3D | ส่วนขยาย OpenGL ES #34 (กลายเป็นแกนหลักใน ES 3.0) [ 14 ] |
| OES_texture_float_linear OES_texture_half_float_linear | ส่วนขยาย OpenGL ES #35 ซึ่งได้รับการขยายเพิ่มเติมใน ES 3.0 และ 3.1 |
| OES_texture_float OES_texture_half_float | ส่วนขยาย OpenGL ES #36 ซึ่งได้รับการขยายเพิ่มเติมใน ES 3.0 และ 3.1 |
| อนุพันธ์มาตรฐาน OES | ส่วนขยาย OpenGL ES #45 |
| OES_vertex_array_object | ส่วนขยาย OpenGL ES #71 (กลายเป็นแกนหลักใน ES 3.0) [ 14 ] |
| OES_surfaceless_context | ส่วนขยาย OpenGL ES #116 |
| แผนที่ลูกบาศก์พื้นผิวความลึก OES | ส่วนขยาย OpenGL ES #136 |
| EXT_texture_filter_anisotropic | ส่วนขยาย OpenGL ES #41 |
| EXT_texture_type_2_10_10_10_REV | ส่วนขยาย OpenGL ES #42 |
| EXT_texture_compression_dxt1 | ส่วนขยาย OpenGL ES #49 |
| EXT_texture_format_BGRA8888 | ส่วนขยาย OpenGL ES #51 |
| EXT_discard_framebuffer | ส่วนขยาย OpenGL ES #64 |
| EXT_blend_minmax | ส่วนขยาย OpenGL ES #65 |
| EXT_read_format_bgra | ส่วนขยาย OpenGL ES #66 |
| EXT_multi_draw_arrays | ส่วนขยาย OpenGL ES #69 |
| EXT_frag_depth | ส่วนขยาย OpenGL ES #86 |
| EXT_unpack_subimage | ส่วนขยาย OpenGL ES #90 |
| EXT_texture_rg | ส่วนขยาย OpenGL ES #103 |
| EXT_draw_buffers | ส่วนขยาย OpenGL ES #151 |
| EXT_compressed_ETC1_RGB8_sub_texture | ส่วนขยาย OpenGL ES #188 |
| NV_draw_buffers | ส่วนขยาย OpenGL ES #91 |
| NV_fbo_color_attachments | ส่วนขยาย OpenGL ES #92 |
| NV_read_buffer | ส่วนขยาย OpenGL ES #93 |
| NV_read_depth_stencil | ส่วนขยาย OpenGL ES #94 |
| ANGLE_texture_compression_dxt | ส่วนขยาย OpenGL ES #111 |
OpenGL ES 3.0
ข้อกำหนด OpenGL ES 3.0 [ 15 ]ได้รับการเผยแพร่สู่สาธารณะในเดือนสิงหาคม พ.ศ. 2555 [ 16 ]ซึ่งสามารถใช้งานร่วมกับ OpenGL ES 2.0 ได้ และใช้งานร่วมกับWebGL 2.0 ได้บางส่วน [ 17 ]เนื่องจาก WebGL 2.0 ได้รับการออกแบบให้มีความสามารถในการทำงานร่วมกันกับ OpenGL ES 3.0 ในระดับสูง[ 18 ] เวอร์ชันปัจจุบันของมาตรฐาน OpenGL ES 3.0 คือ 3.0.6 ซึ่งเผยแพร่ในเดือนพฤศจิกายน พ.ศ. 2562 [ 19 ]
ฟังก์ชันการทำงานใหม่ในข้อกำหนด OpenGL ES 3.0 ประกอบด้วย:
- มีการปรับปรุงหลายอย่างในกระบวนการเรนเดอร์เพื่อให้สามารถเร่งความเร็วของเอฟเฟกต์ภาพขั้นสูงได้ เช่นการสอบถามการบดบังการป้อนกลับการแปลง การเรนเดอร์แบบอินสแตนซ์ และ การรองรับเป้าหมายการเรนเดอร์ สี่ เป้าหมาย ขึ้นไป
- การบีบอัดพื้นผิวETC2/EAC คุณภาพสูงเป็นคุณสมบัติมาตรฐาน ช่วยลดความจำเป็นในการใช้ชุดพื้นผิว ที่แตกต่างกัน สำหรับแต่ละแพลตฟอร์ม
- ภาษา GLSL ES shadingเวอร์ชันใหม่[ 20 ] พร้อมการสนับสนุนเต็มรูปแบบสำหรับ การดำเนินการ จำนวนเต็มและจุดลอยตัว32 บิต
- ฟังก์ชัน การสร้างพื้นผิวได้รับการปรับปรุงอย่างมากรวมถึงการรับประกันการรองรับ พื้นผิว แบบจุดลอยตัวพื้นผิว 3 มิติ พื้นผิวความลึก พื้นผิวจุดยอด พื้นผิว NPOT พื้นผิว R/RG พื้นผิวที่ไม่เปลี่ยนแปลง พื้นผิวอาร์เรย์ 2 มิติswizzlesการ จำกัด ระดับLODและ mip แผนที่ลูกบาศก์ไร้รอยต่อและวัตถุตัวอย่าง
- ชุดรูปแบบพื้นผิวและบัฟเฟอร์การเรนเดอร์ที่จำเป็นและกำหนดขนาดไว้อย่างชัดเจนอย่างครอบคลุม ช่วยลดความแปรปรวนในการใช้งานและทำให้การเขียนแอปพลิเคชันที่พกพาได้ง่ายขึ้นมาก
| ชื่อส่วนขยาย | เรียงลำดับ #หมายเลข | รายละเอียด |
|---|---|---|
| KHR_context_flush_control | ส่วนขยาย OpenGL ES #191 | (สำหรับ GL_KHR_context_flush_control เท่านั้น) |
| เพิ่มเติม | ใน MESA (สำหรับผู้ขับขี่ทุกคน) | |
| OES_texture_compression_astc | ส่วนขยาย OpenGL ES #162 | |
| EXT_texture_border_clamp | ส่วนขยาย OpenGL ES #182 | |
| EXT_draw_elements_base_vertex | ส่วนขยาย OpenGL ES #204 | |
| OES_EGL_image_external_essl3 | ส่วนขยาย OpenGL ES #220 | |
| ฟังก์ชันจำนวนเต็มของเชเดอร์ MESA | ส่วนขยาย OpenGL ES #495 |
OpenGL ES 3.1
ข้อกำหนด OpenGL ES 3.1 [ 21 ]ได้รับการเผยแพร่สู่สาธารณะในเดือนมีนาคม พ.ศ. 2557 ฟังก์ชันการทำงานใหม่ใน OpenGL ES 3.1 ประกอบด้วย: [ 22 ]
- เชเดอร์คำนวณ
- เชเดอร์เวอร์เท็กซ์และแฟรกเมนต์แบบอิสระ
- คำสั่งวาดภาพทางอ้อม
OpenGL ES 3.1 สามารถใช้งานร่วมกับ OpenGL ES 2.0 และ 3.0 ได้ ทำให้แอปพลิเคชันสามารถรวมคุณสมบัติใหม่ๆ เข้าไปได้ทีละน้อย เวอร์ชันจริงคือ 3.1 (พฤศจิกายน 2016) [ 23 ]
| ชื่อส่วนขยาย | เรียงลำดับ #หมายเลข |
|---|---|
| ARB_อาร์เรย์ของอาร์เรย์ | ARB ส่วนขยาย #120 |
| ARB_compute_shader | ARB ส่วนขยาย #122 |
| ตำแหน่งเอกภาพที่ชัดเจนของ ARB | ARB ส่วนขยาย #128 |
| ARB_framebuffer_no_attachments | ARB ส่วนขยาย #130 |
| ARB_โปรแกรม_อินเทอร์เฟซ_สอบถาม | ARB ส่วนขยาย #134 |
| ตัวนับอะตอมของเชเดอร์ ARB | ARB ส่วนขยาย #114 |
| ARB_shader_image_load_store | ARB ส่วนขยาย #115 |
| อ็อบเจ็กต์บัฟเฟอร์จัดเก็บเชเดอร์ ARB | ARB ส่วนขยาย #137 |
| ARB_แยก_วัตถุเฉดสี | ARB ส่วนขยาย #97 |
| ARB_stencil_texturing | ARB ส่วนขยาย #138 |
| ARB_vertex_attrib_binding | ARB ส่วนขยาย #125 |
| ARB_draw_indirect | ARB ส่วนขยาย #87 |
| ARB_shading_language_packing | ARB ส่วนขยาย #116 |
| ขนาดภาพ ARB_shader_image_size | ARB ส่วนขยาย #136 |
| ARB_texture_storage_multisample | ARB ส่วนขยาย #141 |
| ARB_texture_multisample | ARB ส่วนขยาย #67 |
| EXT_shader_integer_mix | ส่วนขยาย OpenGL ES #161 |
| ไม่จำเป็น | Mesa (รองรับไดรเวอร์ OpenGL ES 3.1 ขึ้นไป) |
| ตำแหน่งตัวอย่าง ARB | ARB ส่วนขยาย #181 |
| OES_texture_view | ส่วนขยาย OpenGL ES #218 |
| รูปแบบภาพ NV | ส่วนขยาย OpenGL ES #200 |
| EXT_render_snorm | ส่วนขยาย OpenGL ES #206 |
| EXT_texture_norm16 | ส่วนขยาย OpenGL ES #207 |
OpenGL ES 3.2
ข้อกำหนด OpenGL ES 3.2 [ 24 ]ได้รับการเผยแพร่สู่สาธารณะในเดือนสิงหาคม พ.ศ. 2558 ความสามารถใหม่ใน OpenGL ES 3.2 ได้แก่:
- เชเดอร์ด้าน เรขาคณิตและเทสเซลเลชันเพื่อประมวลผลฉากที่ซับซ้อนบน GPU อย่างมีประสิทธิภาพ
- เป้าหมายการเรนเดอร์แบบจุดลอยตัวเพื่อเพิ่มความยืดหยุ่นในการคำนวณที่มีความแม่นยำสูงขึ้น
- การบีบอัดข้อมูลแบบ ASTCเพื่อลดการ ใช้ หน่วยความจำและแบนด์วิดท์ในการประมวลผลพื้นผิว
- ปรับปรุงการผสมผสานภาพให้ดียิ่งขึ้น เพื่อการสร้างภาพคอมโพสิตที่ซับซ้อนและการจัดการไฟล์แนบสีหลายสีได้อย่างมีประสิทธิภาพ
- เป้าหมายพื้นผิวขั้นสูง เช่น บัฟเฟอร์พื้นผิว อาร์เรย์ 2 มิติแบบมัลติแซมเปิล และอาร์เรย์แผนที่ลูกบาศก์
- คุณสมบัติการดีบักและความทนทานช่วยให้พัฒนาโค้ดได้ง่ายขึ้นและดำเนินการได้อย่างปลอดภัย
สถานะปัจจุบันคือวันที่ 3.2.6 กรกฎาคม 2562 [ 25 ] [ 26 ]
| ชื่อส่วนขยาย | เรียงลำดับ #หมายเลข |
|---|---|
| KHR_blend_equation_advanced | ส่วนขยาย OpenGL ES #168 |
| EXT_color_buffer_float | ส่วนขยาย OpenGL ES #137 |
| KHR_debug | ส่วนขยาย OpenGL ES #118 |
| ความทนทานของ KHR | ส่วนขยาย OpenGL ES #190 |
| OES_copy_image | ส่วนขยาย OpenGL ES #208 |
| OES_draw_buffers_indexed | ส่วนขยาย OpenGL ES #209 |
| OES_draw_elements_base_vertex | ส่วนขยาย OpenGL ES #219 |
| OES_geometry_shader | ส่วนขยาย OpenGL ES #210 |
| OES_gpu_shader5 | ส่วนขยาย OpenGL ES #211 |
| OES_ตัวอย่าง_การแรเงา | ส่วนขยาย OpenGL ES #169 |
| ตัวแปรตัวอย่าง OES | ส่วนขยาย OpenGL ES #170 |
| OES_shader_image_atomic | ส่วนขยาย OpenGL ES #171 |
| OES_shader_io_blocks | ส่วนขยาย OpenGL ES #213 |
| OES_shader_multisample_interpolation | ส่วนขยาย OpenGL ES #172 |
| เชเดอร์เทสเซลเลชัน OES | ส่วนขยาย OpenGL ES #214 |
| OES_texture_border_clamp | ส่วนขยาย OpenGL ES #215 |
| OES_texture_buffer | ส่วนขยาย OpenGL ES #216 |
| OES_texture_cube_map_array | ส่วนขยาย OpenGL ES #217 |
| OES_texture_stencil8 | ส่วนขยาย OpenGL ES #173 |
| OES_texture_storage_multisample_2d_array | ส่วนขยาย OpenGL ES #174 |
| KHR_texture_compression_astc_ldr | ส่วนขยาย OpenGL ES #117 (สำหรับจอ LDR เท่านั้น) |
| OES_primitive_bounding_box | ส่วนขยาย OpenGL ES #212 |
| ไม่จำเป็น | Mesa (รองรับไดรเวอร์ OpenGL ES 3.2 ขึ้นไป) |
| KHR_texture_compression_astc_hdr | ส่วนขยาย OpenGL ES #117 (รวม LDR), ส่วนขยาย ARB #118 |
| KHR_blend_equation_advanced_coherent | ส่วนขยาย OpenGL ES #168 |
| KHR_texture_compression_astc_sliced_3d | ส่วนขยาย OpenGL ES #249 (ส่วนขยาย ARB #189) |
อาร์เรย์วิวพอร์ต OES | ส่วนขยาย OpenGL ES #267 |
มีการพัฒนาหรือกำลังพัฒนาส่วนขยายเพิ่มเติมใน Mesa สำหรับ OpenGL ES เวอร์ชันถัดไป (ดูที่ Mesamatrix)
API รุ่นต่อไปคือ Vulkan [ 27 ]
การใช้งานแพลตฟอร์ม
สำหรับรายชื่อบริษัททั้งหมดและผลิตภัณฑ์ที่ตรงตามมาตรฐาน โปรดดูที่นี่
OpenGL ES 1.0
OpenGL ES 1.0 เพิ่มAPI กราฟิก 3 มิติอย่างเป็นทางการ ให้กับ ระบบปฏิบัติการ Android [ 28 ]และSymbian OS v8.0a [ 29 ] [ 30 ]รวมถึงQNX [ 31 ]นอกจากนี้ยังได้รับการสนับสนุนโดยPlayStation 3ในฐานะหนึ่งใน API กราฟิกอย่างเป็นทางการ[ 32 ] (อีกตัวหนึ่งคือ ไลบรารี libgcm ระดับต่ำ ) โดยใช้Cg ของ Nvidiaแทน GLSL [ 33 ] PlayStation 3 ยังมีคุณสมบัติหลายอย่างของ OpenGL ES เวอร์ชัน 2.0 อีกด้วย
OpenGL ES 1.1
OpenGL ES เวอร์ชัน 1.1 รองรับโดย:
- แอนดรอยด์ 1.6
- ระบบปฏิบัติการ Apple iOSสำหรับiPad , iPhoneและiPod Touch
- ระบบปฏิบัติการ BlackBerry 5.0 ของRIM [ 35 ] (เฉพาะBlackBerry Storm 2 , BlackBerry Curve 8530และรุ่นที่ใหม่กว่าเท่านั้นที่มีฮาร์ดแวร์ที่จำเป็น[ 36 ] )
- แบล็กเบอร์รี่ เพลย์บุ๊ก
- แบล็กเบอร์รี่ บีบี10
- โทรศัพท์ Nokiaรุ่นต่างๆเช่น Nokia N95, N93, N93i และ N82
- Palm webOSใช้ Plug-in Development Kit [ 37 ]
- นินเทนโด 3DS [ 38 ]
OpenGL ES 2.0
ได้รับการสนับสนุนโดย:
- แพลตฟอร์ม Android ตั้งแต่ Android 2.0 ผ่าน NDK และ Android 2.2 ผ่าน Java [ 39 ]
- AmigaOSบนAmigaOneพร้อมWarp3D Novaและการ์ดกราฟิกRadeon HD ที่ใช้งานร่วมกันได้
- ระบบปฏิบัติการ Apple iOS 5 หรือเวอร์ชันที่ใหม่กว่า ในiPad , iPad Mini , iPhone 3GS หรือเวอร์ชันที่ใหม่กว่า และiPod Touchรุ่นที่ 3 หรือเวอร์ชันที่ใหม่กว่า
- อุปกรณ์BlackBerry ที่ใช้ ระบบปฏิบัติการ BlackBerry OS 7.0 และBlackBerry 10รวมถึงBlackBerry PlayBook
- Google Native Client
- Intel HD Graphics 965G / X3000 และสูงกว่า (Linux) [ 40 ]
- Nvidia (Android), Curie NV40+: Linux, Windows [ 41 ]
- โทรศัพท์ Nokiaรุ่นต่างๆ(เช่นNokia N8 ที่ใช้ Symbian ^3 , Nokia N9ที่ใช้MeeGoและNokia N900ที่ใช้Maemo [ 42 ] )
- Palm webOSโดยใช้ Plug-in Development Kit [ 37 ]
- คอนโซลแพนโดรา
- ราสเบอร์รี่พิ
- โอดรอยด์
- โทรศัพท์มือถือ Samsungรุ่นต่างๆ(เช่นรุ่น Wave )
- เว็บเบราว์เซอร์ ( WebGL )
- คอนโซลGCW Zero
- เครื่องเล่นเกมพกพาPlayStation Vita
- เครื่องเล่นเกมPlayStation 4
OpenGL ES 3.0
ได้รับการสนับสนุนโดย:
- ระบบปฏิบัติการ Android ตั้งแต่เวอร์ชัน 4.3 ขึ้นไป บนอุปกรณ์ที่มีฮาร์ดแวร์และไดรเวอร์ที่เหมาะสม รวมถึง:
- เน็กซัส 7 (2013)
- เน็กซัส 4
- เน็กซัส 5
- เน็กซัส 10
- HTC Butterfly S
- HTC One / One Max
- แอลจีจี2
- LG G Pad 8.3
- ซัมซุง กาแล็กซี เจ5
- ซัมซุง กาแล็กซี เจ5 (2016)
- Samsung Galaxy S4 (รุ่น Snapdragon)
- ซัมซุง กาแล็กซี เอส5
- ซัมซุง กาแล็กซี โน้ต 3
- Samsung Galaxy Note 10.1 (รุ่นปี 2014)
- โซนี่ เอ็กซ์พีเรียนซ์ เอ็ม
- โซนี่ เอ็กซ์พีเรียนซ์ Z /ZL
- โซนี่ เอ็กซ์เพอริออน Z1
- โซนี่ เอ็กซ์พีเรียนซ์ Z อัลตร้า
- แท็บเล็ตโซนี่ เอ็กซ์พีเรียนซ์ Z
- ระบบปฏิบัติการ iOS ตั้งแต่เวอร์ชัน 7 ขึ้นไป บนอุปกรณ์ต่างๆ ได้แก่:
- ระบบปฏิบัติการ BlackBerry 10 ตั้งแต่เวอร์ชัน 10.2 ขึ้นไป บนอุปกรณ์ต่างๆ ได้แก่:
รองรับโดย GPU รุ่นล่าสุดบางรุ่น: [ 44 ] [ 45 ]
- ชิปประมวลผลกราฟิก Adrenoซีรีส์ 300 และ 400 ( Android , BlackBerry 10 , Windows 10, Windows RT )
- Mali T600 ซีรีส์ขึ้นไป (Android, Linux , Windows 7)
- PowerVR Series 6 ( iOS , Linux)
- Vivante (Android, OS X 10.8.3, Windows 7)
- Nvidia (Android), Tesla G80+: Linux, Windows 7+
- Intel HD Graphics Sandy Bridge และรุ่นที่สูงกว่า (Linux) [ 40 ]
- AMD Terascale และสถาปัตยกรรม GCN จริง (Windows, Linux)
- LLVMpipe และ Softpipe: ไดรเวอร์ซอฟต์แวร์ใน Mesa [ 41 ]
- VIRGL: ไดรเวอร์เสมือนสำหรับเครื่องเสมือนในปี 2018 ที่ใช้ Mesa 18.1 (ดูรายละเอียดเพิ่มเติมได้ที่ Mesamatrix.net)
OpenGL ES 3.1
รองรับโดย Windows, Linux, Android (ตั้งแต่เวอร์ชัน 5.0) บนอุปกรณ์ที่มีฮาร์ดแวร์และไดรเวอร์ที่เหมาะสม[ 46 ]รวมถึง:
- ซีรีส์ Adreno 400 [ 47 ] [ 48 ]
- ชิปประมวลผล กราฟิก Adrenoซีรีส์ 500 (Mesa 18.1 สำหรับ Linux และ Android)
- AMD Terascale และสถาปัตยกรรม GCN จริง (Windows, Linux (r600, radeonSI))
- กราฟิกการ์ด Intel HD สำหรับซีรี่ส์ Intel Atom Z3700 (Android)
- กราฟิกการ์ด Intel HD สำหรับโปรเซสเซอร์ Intel Celeron ซีรี่ส์ N และ J (Android)
- กราฟิก Intel HD สำหรับ Intel Pentium ซีรี่ส์ N และ J (Android)
- Intel HD Graphics Haswell และรุ่นที่สูงกว่า (Linux Mesa: Ivy Bridge รุ่นก่อนหน้าแทบไม่มีการทำพื้นผิวสเตนซิล) [ 40 ]
- Mali T6xx (midgard) ซีรีส์ขึ้นไป[ 49 ] (Android, Linux)
- การ์ดจอ Nvidia GeForce ซีรีส์ 400ขึ้นไป (Windows, Linux)
- Nvidia Tegra K1 (Android, Linux)
- Nvidia Tegra X1 (แอนดรอยด์)
- PowerVR ซีรี่ส์ 6, 6XE, 6XT, 7XE และ 7XT (Linux, Android)
- Vivante GC2000 ซีรีส์ขึ้นไป (เป็นตัวเลือกเสริมสำหรับ GC800 และ GC1000) [ 50 ]
- panfrost: รองรับ ARM panfrost (Linux Mesa 22.0)
- v3d: ไดรเวอร์สำหรับ Broadcom VideoCore ใน Mesa (Linux)
- Raspberry Pi 4 และ 5
- VIRGL: ไดรเวอร์เสมือนสำหรับเครื่องเสมือนในปี 2018 ที่ใช้ Mesa 18.1 (ดูรายละเอียดเพิ่มเติมได้ที่ Mesamatrix.net)
- LLVMpipe: ไดรเวอร์ซอฟต์แวร์ใน Mesa 20.2 (Linux)
- softpipe: ไดรเวอร์ซอฟต์แวร์ใน Mesa 20.3 (Linux)
- Zink: ไดรเวอร์จำลองใน Mesa 21.1 (Linux)
- d3d12: ไดรเวอร์ WSL2 สำหรับ Linux บนระบบปฏิบัติการ Microsoft 10 ขึ้นไป (Mesa 22.0)
- การ์ดกราฟิก Apple M1 และ M2 ใน Fedora Asahi Remix (Linux)
ชุดส่วนขยาย Android
Android Extension Pack (AEP) คือชุดส่วนขยาย OpenGL ES 3.1 ซึ่งรวมเข้าเป็นส่วนขยายเดียวที่ Google เปิดตัวในปี 2014 これにより、ユーザーはリンドリングのユーザーに実現できます。 AEP ถูกเพิ่มเข้ามาใน Android Lollipop อย่างเป็นทางการเพื่อมอบฟีเจอร์พิเศษ เช่น tessellation ที่เหนือกว่าฟีเจอร์ที่มีอยู่ใน GLES 3.1 อย่างเป็นทางการ การอัปเดต OpenGL ES 3.2 ส่วนใหญ่ประกอบด้วยส่วนเพิ่มเติมของ AEP ซึ่งมีอยู่แล้วใน OpenGL เวอร์ชันเดสก์ท็อป[ 51 ]
OpenGL ES 3.2

OpenGL ES 3.2 ซึ่งรวมAndroid Extension Pack (AEP) ไว้ด้วยนั้น "มีการปรับปรุงเล็กน้อยเมื่อเทียบกับ OpenGL ES 3.1 ของปีที่แล้ว ทั้งสองใช้คุณสมบัติที่คล้ายกันจาก AEP จาก AEP ฮาร์ดแวร์ที่สอดคล้องกับ OpenGL ES 3.2 จะรองรับ Tessellation สำหรับรายละเอียดทางเรขาคณิตเพิ่มเติม, geometry shaders ใหม่, การบีบอัดพื้นผิว ASTC เพื่อลดการใช้แบนด์วิดท์หน่วยความจำ, floating point render targets สำหรับกระบวนการคำนวณที่มีความแม่นยำสูง และคุณสมบัติการดีบักใหม่สำหรับนักพัฒนา คุณสมบัติระดับสูงเหล่านี้มีอยู่แล้วในข้อกำหนด OpenGL 4 ฉบับเต็มของกลุ่ม" [ 52 ] [ 53 ]
รองรับการใช้งานบน Windows, Linux, Android (ตั้งแต่เวอร์ชัน 6.0 ขึ้นไป ต้องใช้ Vulkan 1.0 และ OpenGL ES 3.2) บนอุปกรณ์ที่มีฮาร์ดแวร์และไดรเวอร์ที่เหมาะสม รวมถึง:
- Adreno 420 และรุ่นใหม่กว่า (Android, Linux (freedreno))
- สถาปัตยกรรม AMD GCN (Windows, Linux (Mesa 18.2 พร้อม radeonSI))
- Intel HD Graphics Skylake และรุ่นที่สูงกว่า (Linux) [ 40 ]
- Mali-T760 และรุ่นใหม่กว่า (Android, Linux)
- Nvidia GeForce ซีรีส์ 400 (Fermi) และรุ่นใหม่กว่า (Windows, Linux) [ 54 ]
- VIRGL: ไดรเวอร์เสมือนสำหรับเครื่องเสมือนในปี 2018 ที่ใช้ Mesa 18.1 (ดูรายละเอียดเพิ่มเติมได้ที่ Mesamatrix.net)
- LLVMpipe: ไดรเวอร์ซอฟต์แวร์ใน Mesa 20 (Linux)
- Zink: ไดรเวอร์จำลอง Vulkan ใน Mesa 21.2 (Linux)
การยกเลิกการใช้งานในแพลตฟอร์มของ Apple
OpenGL ES (และ OpenGL) ถูกยกเลิกการใช้งาน ในระบบปฏิบัติการของ Apple โดยหันมาใช้ Metal API กราฟิกที่เป็นกรรมสิทธิ์ของตนเองแทนแต่ยังคงใช้งานได้จนถึงiOS 12เป็น อย่างน้อย [ 55 ]
อนาคต
ปัจจุบันยังไม่มีแผนสำหรับเวอร์ชันหลักใหม่ของ OpenGL ES เนื่องจากการใช้งานVulkanถือว่าเข้ามาแทนที่ในแอปพลิเคชันฝังตัวและแอปพลิเคชันมือถือ การพัฒนาส่วนขยายของ OpenGL ES ยังคงดำเนินต่อไปจนถึงปี 2017 [ 56 ]
ความเข้ากันได้ของ OpenGL
มีการสร้างไลบรารีบางส่วนเพื่อจำลองการเรียกใช้ OpenGL โดยใช้ GL ES:
- Nvidia เสนอไลบรารี ที่ได้รับอนุญาตภายใต้ BSDแบบ 2 ข้อชื่อ Regal ซึ่งเดิมทีเริ่มต้นโดย Cass Everitt และได้รับการอัปเดตครั้งล่าสุดในปี 2016 [ 57 ]ตัวอย่างเช่น Google ใช้NaCl ของ Regal [ 58 ]
- GL4ES ที่ได้รับอนุญาตภายใต้ MITจำลองOpenGL 2.1/1.5 โดยใช้ GL ES 2.0/1.1 โดยอิงจาก glshim [ 59 ]
ดูเพิ่มเติม
- Direct3D – API ของ Windows สำหรับกราฟิก 3 มิติประสิทธิภาพสูง พร้อมรองรับฮาร์ดแวร์เร่งความเร็ว 3 มิติ
- DirectX – API ของ Windows สำหรับจัดการงานที่เกี่ยวข้องกับกราฟิกและวิดีโอ
- Metal – ไลบรารีประมวลผลกราฟิก 3 มิติแบบเร่งความเร็วระดับต่ำประสิทธิภาพสูงสำหรับแพลตฟอร์มของ Apple
- OpenSL ES – API สำหรับการประมวลผลเสียงบนระบบฝังตัว พัฒนาโดย Khronos Group
- ANGLE (ซอฟต์แวร์) – ไลบรารีที่ Google พัฒนาขึ้นเพื่อแปลงคำสั่ง OpenGL ES ให้เป็นคำสั่งของ DirectX หรือ Vulkan
- Mobile 3D Graphics API - API กราฟิกและ ข้อกำหนด รูปแบบไฟล์สำหรับการพัฒนาแอปพลิเคชันJava ME
อ่านเพิ่มเติม
- กินส์เบิร์ก, แดน; ปูร์โนโม, บูดิริจันโต; ชไรเนอร์, เดฟ; มุนซี, อาฟแท็บ (2014) คู่มือการเขียนโปรแกรม OpenGL ES 3.0แอดดิสัน-เวสลีย์ มืออาชีพไอเอสบีเอ็น 978-0-321-93388-1.
- พูลลี, คาริ; อาร์นิโอ, โทมิ; มิเอตติเนน, วิลล์; รอยเมลา, คิมโม และวาราลา, เจนี (2550) กราฟิก 3D บนมือถือพร้อม OpenGL ES และ M3G มอร์แกน คอฟมันน์. ไอเอสบีเอ็น 978-0-12-373727-4.
- Astle, Dave & Durnil, David (2004). การพัฒนาเกมด้วย OpenGL ES . Course Technology PTR. ISBN 1-59200-370-2.
- Pulli, Kari; Aarnio, Tomi; Roimela, Kimmo & Vaarala, Jani (2005). "การออกแบบอินเทอร์เฟซการเขียนโปรแกรมกราฟิกสำหรับอุปกรณ์เคลื่อนที่" IEEE Computer Graphics and Applications . 25 (6). IEEE CG&A 2005: 66– 75. Bibcode : 2005ICGA...25f..66P . doi : 10.1109/MCG.2005.129 . PMID 16315479 . S2CID 8177273 .
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ โอเพนกลู อีเอส
OpenGL สำหรับระบบฝังตัว ( OpenGL ESหรือGLES ) เป็นส่วนย่อยของ อินเทอร์เฟซการเขียน โปรแกรมแอปพลิเคชัน (API) สำหรับการเรนเดอ...
เวอร์ชัน
ปัจจุบันมีข้อกำหนด OpenGL ES หลายเวอร์ชัน OpenGL ES 1.0 ถูกกำหนดขึ้นโดยอ้างอิงจากข้อกำหนด OpenGL 1.3, OpenGL ES 1.1 ถูกกำหนดโดยอ้างอิงจากข้อกำหนด OpenGL 1.5 และ OpenGL ES 2.0 ถูกกำหนดโดยอ้างอิงจากข้อกำหนด OpenGL 2.
OpenGL ES 1.0
OpenGL ES 1.0 เปิดตัวสู่สาธารณะเมื่อวันที่ 28 กรกฎาคม 2546 OpenGL ES 1.0 ใช้พื้นฐานจาก API ของ OpenGL 1.
OpenGL ES 1.1
OpenGL ES 1.1 เพิ่มคุณสมบัติต่างๆ เช่น การรองรับมัลติเท็กซ์เจอร์แบบบังคับ การรองรับมัลติเท็กซ์เจอร์ที่ดีขึ้น (รวมถึงตัวรวมและ การดำเนินการเท็กซ์เจอร์ แบบดอทโปรดักต์ ) การสร้าง มิปแมป อัตโนมัติ ออบ เจ็กต์บัฟเฟอร์จุดยอด การสอบถามสถานะ ระนาบตัดของผู้ใช้...