OpenGL ES проти OpenGL


91

Які відмінності між OpenGL ES та OpenGL?


13
Які версії OpenGL та OpenGL ES ви порівнюєте?
Firas Assaad

3
Якщо ви використовуєте будь-які речі GL2, завжди базуйте їх на GLES2. Існують різні способи робити щось у GL2, але здебільшого в GLES2. Крім того, ви не зіткнетеся з проблемами переносу матеріалів таким чином.
zezba9000

можливий дублікат OpenGL або OpenGL ES
Енамул Хасан

Відповіді:


54

Дві найбільш істотні відмінності між OpenGL ES та OpenGL - це видалення семантики виклику glBegin ... glEnd для примітивного візуалізації (на користь масивів вершин) та введення типів даних із фіксованою точкою для координат вершин та атрибутів для кращої підтримки обчислювальні можливості вбудованих процесорів, яким часто не вистачає FPU

Подивіться тут: OpenGL_ES


19
Їх також видалено з останніх версій настільного / робочого місця OpenGL.
Ben Voigt

2
Цікавим є порівняння між OGL 3 та GLES 2. У OGL 3 безпосередній режим застарілий (хоча все ще підтримується). Багато (хоча і не всі) функціональних можливостей OGL 3 доступні в GLES 2.
nullspace

49

OpenGL ES - це відкритий API для вбудованих систем. За кількістю функцій api він простіший за звичайний opengl, але може бути складнішим у використанні, оскільки вам доведеться використовувати вершинні буфери та писати більше шейдерів.

Коли ви використовуєте звичайний opengl, ви можете використовувати glBegin та glEnd, щоб укласти примітиви геометрії, які вам потрібно намалювати, але при використанні Opengl ES вам доведеться використовувати буфери вершин. Я думаю, це для проблем продуктивності.

В даний час існує дві версії Opengl ES, версія 1.1 може підтримувати лише фіксований конвеєр візуалізації, тоді як версія 2.0 підтримує шейдер glsl. Однак у нього немає фіксованого конвеєра візуалізації. Іншими словами, вам доведеться написати власний шейдер для всього.

Opengl ES в основному використовується на мобільних телефонах та в Інтернеті (webgl). Відповідно до специфікації, ваш настільний драйвер opengl може підтримувати всі відкриті програми apis.


3
Не думаю, що вам потрібно використовувати вершинні буфери. Ви також можете використовувати масиви вершин безпосереднього режиму. Я помиляюся?
Гравітація

Так, вам не потрібно використовувати вершинні буфери
Станіслав Агєєв

2
"Коли ви використовуєте звичайний opengl, ви можете використовувати glBegin і glEnd, щоб укласти примітиви геометрії, які вам потрібно намалювати", не якщо ви хочете, щоб ваш код був прямим сумісним, а також якщо ви використовуєте Mac, який я am;)
Jerfov2

38

Так само, як додати, що OpenGL 3.3 та OpenGL ES 2.0 в основному взаємодіють, використовуючи підмножину функцій OpenGL 3.3. Мій спеціальний движок C ++ використовує ті самі виклики API, з декількома визначеннями, для Android / IOS / Windows / OSX / Linux.

Серед ключових відмінностей є:

  • відсутність підтримки геометрії шейдера
  • відсутність мін / макс змішування (для цього може бути продовження)
  • немає примітивного списку чотирьох
  • більш обмежені формати текстур (особливо щодо плаваючої точки)
  • glGetTexImage недоступний
  • немає зворотного зв’язку про перетворення, однаково для кількох інших розширених функцій

Є також багато інших відмінностей, але це охоплює кілька важливих.


7
Я думаю, ми можемо повільно відредагувати цю публікацію, включивши всі відсутні функції викликів. А версії для порівняння все ще мають бути 3.3 та ES 2.0, оскільки вони були випущені того ж року
CoffeDeveloper

8

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


6

Ознайомтеся з оглядом OpenGL ES тут: http://www.khronos.org/opengles/

Коротше кажучи, ES є підмножиною Open GL для "вбудованих систем". Конкретні відмінності залежатимуть від версій та наборів функцій, які ви порівнюєте.



4

Думаю, ви отримаєте кращу відповідь, якщо запитаєте "в чому різниця між 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 рухається архітектурно в майбутньому.


4

Термінологія та версії досить заплутані (особливо для початківців). Для отримання більш цілісного уявлення про OpenGL та OpenGL-ES (GLES), див. OpenGL - Тоді і зараз .


1
Посилання також містить чудовий підручник із прикладами, добре поясненими, як працює конвеєр рендерінгу OpenGL.
JustWe

Ось посилання на підручник.
ap-osd

3

Головна відмінність між ними полягає в тому, що OpenGL ES створений для вбудованих систем, таких як смартфони, тоді як OpenGL - це настільні ПК. На рівні кодування OpenGL ES не підтримує функції з фіксованою функцією, такі як glBegin / glEnd тощо ... OpenGL може підтримувати конвеєр із фіксованою функцією (використовуючи профіль сумісності).


2

Сучасна відповідь на ES 3.0 порівняно з OpenGL 4.6 значно відрізняється від прийнятої відповіді. Зараз усі речі з фіксованого трубопроводу зникли.

ES для вбудованих систем набагато менш надійний.


1

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


0

Говорячи просто, opengl - це настільна версія, а opengl - для вбудованих систем, таких як мобільні телефони, де обмеження пам’яті та продуктивності більше, ніж у комп’ютерів. opengl буде важче використовувати.


0

OpenGL - це 2D та 3D графічний API, що забезпечує тисячі додатків для різноманітних комп'ютерних платформ.

OpenGL ES - це чітко визначені підмножини настільного OpenGL.

OpenGL® ES - це безкоштовний крос-платформний API для повнофункціональної 2D та 3D графіки на вбудованих системах - включаючи консолі, телефони, побутові прилади та транспортні засоби. Він складається з чітко визначених підмножин настільного OpenGL, ...

Дивіться це посилання .

PS

WebGL ділиться специфікацією з OpenGL ES, тобто якщо ви вивчили OpenGL для робочого столу, вивчити інші просто (OpenGL ES, WebGL).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.