Які відмінності між OpenGL ES та OpenGL?
Які відмінності між OpenGL ES та OpenGL?
Відповіді:
Дві найбільш істотні відмінності між OpenGL ES та OpenGL - це видалення семантики виклику glBegin ... glEnd для примітивного візуалізації (на користь масивів вершин) та введення типів даних із фіксованою точкою для координат вершин та атрибутів для кращої підтримки обчислювальні можливості вбудованих процесорів, яким часто не вистачає FPU
Подивіться тут: OpenGL_ES
OpenGL ES - це відкритий API для вбудованих систем. За кількістю функцій api він простіший за звичайний opengl, але може бути складнішим у використанні, оскільки вам доведеться використовувати вершинні буфери та писати більше шейдерів.
Коли ви використовуєте звичайний opengl, ви можете використовувати glBegin та glEnd, щоб укласти примітиви геометрії, які вам потрібно намалювати, але при використанні Opengl ES вам доведеться використовувати буфери вершин. Я думаю, це для проблем продуктивності.
В даний час існує дві версії Opengl ES, версія 1.1 може підтримувати лише фіксований конвеєр візуалізації, тоді як версія 2.0 підтримує шейдер glsl. Однак у нього немає фіксованого конвеєра візуалізації. Іншими словами, вам доведеться написати власний шейдер для всього.
Opengl ES в основному використовується на мобільних телефонах та в Інтернеті (webgl). Відповідно до специфікації, ваш настільний драйвер opengl може підтримувати всі відкриті програми apis.
Так само, як додати, що OpenGL 3.3 та OpenGL ES 2.0 в основному взаємодіють, використовуючи підмножину функцій OpenGL 3.3. Мій спеціальний движок C ++ використовує ті самі виклики API, з декількома визначеннями, для Android / IOS / Windows / OSX / Linux.
Серед ключових відмінностей є:
Є також багато інших відмінностей, але це охоплює кілька важливих.
OpenGL ES означає Open Graphics Library для вбудованих систем (OpenGL ES або GLES) - це підмножина інтерфейсу програмування програмного забезпечення (API) OpenGL для візуалізації 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 та OpenGL-ES (GLES), див. OpenGL - Тоді і зараз .
Головна відмінність між ними полягає в тому, що OpenGL ES створений для вбудованих систем, таких як смартфони, тоді як OpenGL - це настільні ПК. На рівні кодування OpenGL ES не підтримує функції з фіксованою функцією, такі як glBegin / glEnd тощо ... OpenGL може підтримувати конвеєр із фіксованою функцією (використовуючи профіль сумісності).
Сучасна відповідь на ES 3.0 порівняно з OpenGL 4.6 значно відрізняється від прийнятої відповіді. Зараз усі речі з фіксованого трубопроводу зникли.
ES для вбудованих систем набагато менш надійний.
OpenGL ES - це просто OpenGL API для вбудованих систем (OpenGL ES відноситься до вбудованих систем OpenGL). Отже, це підмножина OpenGL, яка широко використовується у мобільних телефонах та деяких системах VR, і вона розроблена для менш складного обладнання. OpenGL ES має менше термінів і функцій, ніж OpenGL, сприймайте це як: ви берете саме те, що вам потрібно для цієї системи, тому що якщо нам не потрібна функція в цілому, наша робота або апаратне забезпечення не може з нею впоратись, тому не потрібно додавати ця функція, але в цьому ускладнює використання цього API через необхідність писати більше шейдерів та складних кодів, щоб зробити щось просте, оскільки OpenGL ES не надає шейдери в графічному конвеєрі як OpenGL. остання версія OpenGL ES - 3.2, тепер вона може забезпечити підтримку Тесселяції для додаткових деталей геометрії, нових геометричних шейдерів. тому я раджу почати вивчати або використовувати OpenGL ES 3.0+ (якщо це ваша мова перекладу), оскільки зараз і наступне покоління не використовуватимуть старі версії з більш потужними апаратними та графічними картами, а якщо ваша ціль OpenGL, починайте з v3. 3+ або 4.0+. якщо у вас більше часу без проблем швидко перегляньте старі версії, щоб більше зрозуміти, як все розвивалося і чому. Ви можете переглянути це посилання для отримання додаткової інформації:https://en.wikipedia.org/wiki/OpenGL_ES
OpenGL - це 2D та 3D графічний API, що забезпечує тисячі додатків для різноманітних комп'ютерних платформ.
OpenGL ES - це чітко визначені підмножини настільного OpenGL.
OpenGL® ES - це безкоштовний крос-платформний API для повнофункціональної 2D та 3D графіки на вбудованих системах - включаючи консолі, телефони, побутові прилади та транспортні засоби. Він складається з чітко визначених підмножин настільного OpenGL, ...
Дивіться це посилання .
PS
WebGL ділиться специфікацією з OpenGL ES, тобто якщо ви вивчили OpenGL для робочого столу, вивчити інші просто (OpenGL ES, WebGL).