В чем разница между OpenGL ES и OpenGL?


Ответы:


13

OpenGL ES (Embedded Systems) является урезанной версией OpenGL. Есть много различий между этими двумя, и если вы хотите углубиться в детали, то вы можете прочитать этот документ 128 спецификации. Но ES - это подмножество OpenGL, поэтому все приложения ES работают на не-ES системах, но не наоборот.

Нет ни одного места, где вы могли бы легко определить, что находится в ES, а что нет. Даже одно определение таково: «OpenGL-ES похож на OpenGL, но без большого количества вещей. Например, нет glBegin или glEnd».


5
ES не является прямым подмножеством OpenGL, поэтому ваше утверждение о том, что все приложения ES работают в системах, отличных от ES, не соответствует действительности.
Яри ​​Комппа

5
@JariKomppa - это с OpenGL 4.1.
DMan

Хорошая сводка изменений / различий была бы хороша.
Бобобобо

19

Увы, пока ни один из ответов не является ни полным, ни полностью правильным. Действительно, OpenGL-ES делает две вещи, которые не делает OpenGL:

1) он урезает, а затем расширяет API OpenGL, чтобы сделать его подходящим для мобильной платформы. То есть сначала они удаляют API и функции, которые вам действительно не нужны, и обременительны для мобильных реализаций, таких как рендеринг полигонов или использование списков отображения. Затем он делает несколько разумных расширений, чтобы сделать его более полезным для мобильной платформы. Я даже не могу вспомнить пример этого, хотя.

2) он обеспечивает интерфейс для оконного менеджера (и, следовательно, встроенного графического оборудования) мобильной платформы. Эта часть OpenGL-ES, известная как EGL, очень похожа на GLUT на рабочем столе. За исключением того, что у него нет ни одного из тех удобных методов, которые не являются строго необходимыми для этого интерфейса. Таким образом, не существует API для рисования многогранников или сфер (как в GLUT). Но есть, например, API, которые соответствуют GLUT init (), и обратным вызовам DisplayFunc () и ReshapeFunc ().


2
EGL не является частью OpenGL ES. Это отдельная вещь. Смотрите спецификацию Он не является обязательной частью OpenGL ES и почти не упоминается, за исключением того, что он может существовать в вашей системе, но в противном случае настройка окна и т. Д.
Выходит

7

На Android доступно две версии OpenGL ES:

  • OpenGL ES 1.x (1.0 или 1.1): подмножество OpenGL 1.5 без непосредственных команд
    • нет glBegin / glEnd
    • нет поддержки Quad или Polygon
  • OpenGL ES 2.0: подмножество OpenGL 3.X без фиксированного конвейера
    • вершинные шейдеры
    • фрагментные шейдеры
    • геометрические шейдеры недоступны

Внимание, OpenGL ES 2.0 не совместим с OpenGL ES 1.X!

Почти все телефоны Android имеют графический процессор OpenGL 1.X и большинство из них имеют 2.0. OpenGL ES 2.0 доступен только с Android 2.x или новее.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.