Кіріспе
Кіріктірілген жүйелерге арналған OpenGL API (OpenGL ES немесе GLES) – бейне ойындарда қолданылатын 2D және 3D компьютерлік графиканы көрсетуге арналған OpenGL компьютерлік графиканы көрсету бағдарламалық интерфейсінің (API) ішінара бөлігі, әдетте графикалық процессорды (GPU) пайдалана отырып, аппараттық түрде жеделдетіледі. Ол смартфондар, планшеттік компьютерлер, ойын консольдары және жеке цифрлық көмекшілер (PDA) сияқты кіріктірілген жүйелер үшін жасалған. OpenGL ES – "тарихтағы ең көп тараған 3D графикалық API".
OpenGL for Embedded Systems (OpenGL ES or GLES) is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware accelerated using a graphics processing unit (GPU). It is designed for embedded systems like smartphones, tablet computers, video game consoles and PDAs. OpenGL ES is the "most widely deployed 3D graphics API in history".
Нұсқалар
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 API-нің қысқартылған нұсқасы болып табылады, ал керісінше, қолданылған нақты мүмкіндіктерге байланысты, көшіру мүмкін де, мүмкін де емес. OpenGL ES өзінің көлденең тілінің (OpenGL ES SL) нұсқасымен бірге келеді, ол OpenGL SL-ден өзгеше. 1.0 және 1.1 нұсқаларында ортақ (CM) және ортақ жеңіл (CL) профильдері бар, олардың арасындағы айырмашылық – ортақ жеңіл профилі тек қана тұрақты нүктелі деректерді қолдайды, ал ортақ профилі қамбалдаушы және тұрақты нүктелі деректерді қолдайды.
OpenGL ES 1.1 -ге қосылған
OpenGL ES 1.1 көп текстураны міндетті түрде қолдау, жақсырақ көп текстура қолдауы (комбинаторлар мен нүктелік көбейтудің текстуралық операцияларын қоса), автоматты түрде mipmap жасау, vertex буфер объектілері, күй сұраулары, пайдаланушының қиылыс жазықтықтары және нүктелерді көрсетуге жақсырақ бақылау сияқты мүмкіндіктерді қосты. Нақты нұсқасы 1.1.12. Кеңейту атауы Сорт #СанOES текстураны салу OpenGL ES кеңейтуі #7 OES матрицаны алу OpenGL ES кеңейтуі #11OES нүкте мөлшері массиві OpenGL ES кеңейтуі #14OES нүктелік сприт OpenGL ES кеңейтуі #15 Опциялық Mesa (барлық драйверлер) OES фреймбуфер объектісі OpenGL ES кеңейтуі #10 (ES 2.0-де негізгіге айналды) OES EGL суреті OpenGL ES кеңейтуі #23 OES EGL суреті сыртқы OpenGL ES кеңейтуі #87 OES қажетті ішкі формат OpenGL ES кеңейтуі # TBD
OpenGL ES 3.2 -ге қосылған
OpenGL ES 3.2 спецификациясы 2015 жылдың тамызында жарияланды. OpenGL ES 3.2-нің жаңа мүмкіндіктері:
GPU-да күрделі көріністерді тиімді өңдеуге арналған геометрия және тесселяция шейдерлері. Жоғары дәлдіктегі есептеу операцияларында икемділікті арттыру үшін қозғалмалы нүктелі рендер мақсаттары. Текстураларды өңдеуге жұмсалатын жад көлемін және өткізу қабілетін азайту үшін ASTC қысылуы. Құрама композициялау және бірнеше түсті қосымшаларды өңдеу үшін күшейтілген араластыру. Текстуралық буферлер, көп үлгілі 2D массивтер және куб карта массивтері сияқты кеңейтілген текстуралық мақсаттар. Кодты оңай әзірлеу және қауіпсіз орындау үшін түзету және сенімділік мүмкіндіктері. Ағымдағы нұсқасы 2019 жылдың 3.2.6 шілдесі. Келесі буын API – Vulkan.
Келесі кеңейтімдер Mesa-да (барлық драйверлер OpenGL ES 3.2+) әзірленуде немесе әзірлену сатысында (Mesamatrix-ті қараңыз).
Кеңейтім атауының реті #NumberKHR араластыру теңдеуі advancedOpenGL ES кеңейтімі #168EXT түс буфері floatOpenGL ES кеңейтімі #137KHR debugOpenGL ES кеңейтімі #118KHR сенімділік OpenGL ES кеңейтімі #190OES көшіру суреті OpenGL ES кеңейтімі #208OES буферлерді индекстеу OpenGL ES кеңейтімі #209OES элементтердің негізгі нүктесі OpenGL ES кеңейтімі #219OES геометрия шейдері OpenGL ES кеңейтімі #210 OES gpu shader5OpenGL ES кеңейтімі #211 OES үлгілік көлеңкелеу OpenGL ES кеңейтімі #169OES үлгілік айнымалылар OpenGL ES кеңейтімі #170OES шейдер суреті атомдық OpenGL ES кеңейтімі #171OES шейдер кіріс блогы OpenGL ES кеңейтімі #213OES шейдер көп үлгілік интерполяциясы OpenGL ES кеңейтімі #172OES тесселяция шейдері OpenGL ES кеңейтімі #214OES текстура шекарасы қысқышы OpenGL ES кеңейтімі #215OES текстура буфері OpenGL ES кеңейтімі #216OES текстура куб карта массиві OpenGL ES кеңейтімі #217OES текстура үлгісі 8OpenGL ES кеңейтімі #173OES текстура сақтағышы көп үлгілік 2d массиві OpenGL ES кеңейтімі #174KHR текстура қысылуы astc ldrOpenGL ES кеңейтімі #117 (тек LDR)OES примитив шекарасы қорабы OpenGL ES кеңейтімі #212optional Mesa (барлық драйверлер OpenGL ES 3.2+)KHR текстура қысылуы astc hdrOpenGL ES кеңейтімі #117 (LDR қоса алғанда), ARB кеңейтімі #118KHR араластыру теңдеуі advanced coherentOpenGL ES кеңейтімі #168KHR текстура қысылуы astc тілімделген 3dOpenGL ES кеңейтімі #249 (ARB кеңейтімі #189)OES көріс порты массиві OpenGL ES кеңейтімі #267.
Geometry and tessellation shaders to efficiently process complex scenes on the GPU. Floating point render targets for increased flexibility in higher precision compute operations. ASTC compression to reduce the memory footprint and bandwidth used to process textures. Enhanced blending for sophisticated compositing and handling of multiple color attachments. Advanced texture targets such as texture buffers, multisample 2D array and cube map arrays. Debug and robustness features for easier code development and secure execution. Actual State is 3.2.6 July 2019. Extension Name Sort #NumberKHR blend equation advancedOpenGL ES Extension #168EXT color buffer floatOpenGL ES Extension #137KHR debugOpenGL ES Extension #118KHR robustnessOpenGL ES Extension #190OES copy imageOpenGL ES Extension #208OES draw buffers indexedOpenGL ES Extension #209OES draw elements base vertexOpenGL ES Extension #219OES geometry shaderOpenGL ES Extension #210 OES gpu shader5OpenGL ES Extension #211 OES sample shadingOpenGL ES Extension #169OES sample variablesOpenGL ES Extension #170OES shader image atomicOpenGL ES Extension #171OES shader io blocksOpenGL ES Extension #213OES shader multisample interpolationOpenGL ES Extension #172OES tessellation shaderOpenGL ES Extension #214OES texture border clampOpenGL ES Extension #215OES texture bufferOpenGL ES Extension #216OES texture cube map arrayOpenGL ES Extension #217OES texture stencil8OpenGL ES Extension #173OES texture storage multisample 2d arrayOpenGL ES Extension #174KHR texture compression astc ldrOpenGL ES Extension #117 (LDR only)OES primitive bounding boxOpenGL ES Extension #212optional Mesa (all drivers OpenGL ES 3.2+)KHR texture compression astc hdrOpenGL ES Extension #117 (LDR included), ARB Extension #118KHR blend equation advanced coherentOpenGL ES Extension #168KHR texture compression astc sliced 3dOpenGL ES Extension #249 (ARB Extension #189)OES viewport arrayOpenGL ES Extension #267
Some more extensions are developed or in Development in Mesa for next OpenGL ES Version (see Mesamatrix). Next generation API is Vulkan.
Android кеңейтуі
Android Extension Pack (AEP) — Google компаниясы 2014 жылы ұсынған, бір кеңейтуге біріктірілген OpenGL ES 3.1 кеңейтулерінің жиынтығы. Бұл қолданбаларға кеңейтулер жиынтығының барлық мүмкіндіктерін пайдалануға мүмкіндік береді, бірақ тек біреуінің қолдауын тексеру жеткілікті. AEP ресми түрде Android Lollipop-қа GLES 3.1 нұсқасында болмаған қосымша мүмкіндіктерді ұсыну үшін қосылды. OpenGL ES 3.2 жаңартуының көп бөлігі AEP-ге енгізілген өзгерістерден тұрады, олар бұрыннан-ақ десктоптық OpenGL-де бар.
Apple құрылғыларындағы депрессия
OpenGL ES (және OpenGL) Apple операциялық жүйелерінде қолданыстан шығарылған, бірақ кем дегенде iOS 12 нұсқасына дейін жұмыс істей береді.
Болашақ
Қазіргі уақытта OpenGL ES-тің жаңа негізгі нұсқасын жасау жоспары жоқ, себебі Vulkan қабылдануы кіріктірілген және мобильдік қолданбаларда оны ығыстырады деп саналады. OpenGL ES-ке қосымшаларды әзірлеу 2017 жылдан бері жалғасуда.