กลับไปหน้าบทความ

อ่าน 13 นาที

โอเพนกลู อีเอส

OpenGL สำหรับระบบฝังตัว ( OpenGL ESหรือGLES ) เป็นส่วนย่อยของ อินเทอร์เฟซการเขียน โปรแกรมแอปพลิเคชัน (API) สำหรับการเรนเดอ...

โอเพนกลู อีเอส

โอเพนกลู อีเอส
นักพัฒนากลุ่มโครโนส
ปล่อย28 กรกฎาคม 2546 ( 28 กรกฎาคม 2546 )
เวอร์ชันเสถียร
3.2 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 10 สิงหาคม 2558 ( 10 สิงหาคม 2558 )
ผู้สืบทอดวัลคาน
พิมพ์APIกราฟิก 3 มิติ
ใบอนุญาต
  • ใบอนุญาต โอเพนซอร์สสำหรับการใช้งานตัวอย่างการใช้งาน (SI): นี่คือใบอนุญาตซอฟต์แวร์เสรีประเภท B ซึ่งมีรูปแบบคล้ายคลึงกับใบอนุญาต BSD, X และ Mozilla
  • ใบอนุญาตเครื่องหมายการค้าสำหรับผู้ได้รับอนุญาตรายใหม่ที่ต้องการใช้เครื่องหมายการค้าและโลโก้ OpenGL และอ้างว่าสอดคล้อง[ 2 ]
เว็บไซต์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 ประกอบด้วย:

ชื่อส่วนขยาย เรียงลำดับ #หมายเลข รายละเอียด
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_shaderARB ส่วนขยาย #122
ตำแหน่งเอกภาพที่ชัดเจนของ ARBARB ส่วนขยาย #128
ARB_framebuffer_no_attachmentsARB ส่วนขยาย #130
ARB_โปรแกรม_อินเทอร์เฟซ_สอบถามARB ส่วนขยาย #134
ตัวนับอะตอมของเชเดอร์ ARBARB ส่วนขยาย #114
ARB_shader_image_load_storeARB ส่วนขยาย #115
อ็อบเจ็กต์บัฟเฟอร์จัดเก็บเชเดอร์ ARBARB ส่วนขยาย #137
ARB_แยก_วัตถุเฉดสีARB ส่วนขยาย #97
ARB_stencil_texturingARB ส่วนขยาย #138
ARB_vertex_attrib_bindingARB ส่วนขยาย #125
ARB_draw_indirectARB ส่วนขยาย #87
ARB_shading_language_packingARB ส่วนขยาย #116
ขนาดภาพ ARB_shader_image_sizeARB ส่วนขยาย #136
ARB_texture_storage_multisampleARB ส่วนขยาย #141
ARB_texture_multisampleARB ส่วนขยาย #67
EXT_shader_integer_mixส่วนขยาย OpenGL ES #161
ไม่จำเป็น Mesa (รองรับไดรเวอร์ OpenGL ES 3.1 ขึ้นไป)
ตำแหน่งตัวอย่าง ARBARB ส่วนขยาย #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 รองรับโดย:

OpenGL ES 2.0

ได้รับการสนับสนุนโดย:

OpenGL ES 3.0

ได้รับการสนับสนุนโดย:

รองรับโดย 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 บนระบบ Linux (พร้อมการ์ดจอ AMD )

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:

ดูเพิ่มเติม

  • 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 ES
  • เวทีสาธารณะ
  • รายชื่ออุปกรณ์ที่รองรับ OpenGL ES
  • หน้าหลัก OpenGL
  • โปรแกรมจำลอง OpenGL ES 1.1 และ 2.0 จาก ARM ลิงก์ใช้งานไม่ได้ ห้ามคลิก
  • โปรแกรมจำลอง OpenGL ES 3.0 จาก ARMลิงก์ใช้งานไม่ได้ ห้ามคลิก
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=OpenGL_ES&oldid=1359956898 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ โอเพนกลู อีเอส

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 เพิ่มคุณสมบัติต่างๆ เช่น การรองรับมัลติเท็กซ์เจอร์แบบบังคับ การรองรับมัลติเท็กซ์เจอร์ที่ดีขึ้น (รวมถึงตัวรวมและ การดำเนินการเท็กซ์เจอร์ แบบดอทโปรดักต์ ) การสร้าง มิปแมป อัตโนมัติ ออบ เจ็กต์บัฟเฟอร์จุดยอด การสอบถามสถานะ ระนาบตัดของผู้ใช้...