Если вы используете какой-либо материал GL2, всегда основывайте его на GLES2. В GL2 есть разные способы делать что-то, но в GLES2 по большей части один. Также вы не столкнетесь с проблемами при переносе таким образом.
Двумя наиболее существенными различиями между OpenGL ES и OpenGL являются удаление семантики вызова glBegin ... glEnd для примитивного рендеринга (в пользу массивов вершин) и введение типов данных с фиксированной точкой для координат и атрибутов вершин для лучшей поддержки вычислительные возможности встроенных процессоров, которым часто не хватает FPU
Они также были удалены из последних версий OpenGL для настольных компьютеров и рабочих станций.
Бен Фойгт
2
Интересно сравнение между OGL 3 и GLES 2. В OGL 3 немедленный режим устарел (хотя все еще поддерживается). Большая часть (хотя и не вся) функциональности OGL 3 доступна в GLES 2.
nullspace
50
OpenGL ES - это opengl api для встраиваемых систем. Он проще, чем обычный opengl, с точки зрения количества функций api, но может быть сложнее в использовании, поскольку вам придется использовать буферы вершин и писать больше шейдеров.
Когда вы используете обычный opengl, вы можете использовать glBegin и glEnd для включения геометрических примитивов, которые вам нужно нарисовать, но при использовании Opengl ES вам придется использовать буферы вершин. Я думаю, это из соображений производительности.
В настоящее время существует две версии Opengl ES: версия 1.1 может поддерживать только фиксированный конвейер рендеринга, а версия 2.0 поддерживает шейдер glsl. Однако у него нет фиксированного конвейера рендеринга. Другими словами, вам придется написать свой шейдер для всего.
Opengl ES в основном используется на мобильных телефонах и в Интернете (webgl). Согласно спецификации, ваш настольный драйвер opengl может поддерживать все opengl es apis.
Я не думаю, что вам необязательно использовать буферы вершин. Вы также можете использовать массивы вершин в непосредственном режиме. Я ошибся?
Gravity
Да, вам не обязательно использовать вершинные буферы,
Станислав Агеев
2
«Когда вы используете обычный opengl, вы можете использовать glBegin и glEnd для включения геометрических примитивов, которые вам нужно нарисовать», но не в том случае, если вы хотите, чтобы ваш код был совместим с прямой связью, а также если вы используете Mac, что я am;)
Jerfov2
39
Так же, как добавить, что OpenGL 3.3 и OpenGL ES 2.0 в основном совместимы, используя подмножество функций OpenGL 3.3. Мой собственный движок C ++ использует те же вызовы API с некоторыми определениями для Android / IOS / Windows / OSX / Linux.
Среди ключевых отличий:
отсутствие поддержки геометрических шейдеров
нет смешивания min / max (для этого может быть расширение)
нет примитива Quad List
более ограниченные форматы текстур (особенно с плавающей запятой)
glGetTexImage недоступен
нет обратной связи с преобразованием, как и для некоторых других дополнительных функций
Есть также много других отличий, но это покрывает несколько важных.
Я думаю, мы можем постепенно отредактировать этот пост, чтобы включить в него все отсутствующие вызовы функций. И версии для сравнения должны быть 3.3 и ES 2.0, так как они были выпущены в том же году
CoffeDeveloper
8
OpenGL ES означает, что открытая графическая библиотека для встраиваемых систем (OpenGL ES или GLES) является подмножеством прикладного программного интерфейса (API) рендеринга компьютерной графики OpenGL для рендеринга 2D и 3D компьютерной графики, например, используемой в видеоиграх, обычно с аппаратным ускорением с использованием графический процессор (GPU). Он разработан для встраиваемых систем, таких как смартфоны, компьютерные планшеты, игровые приставки и КПК.
Я думаю, вы получите лучший ответ, если спросите: «В чем разница между OpenGL и OpenGL ES».
Между OpenGL ES 1.1 и ES 2.0, OpenGL 1.5 и 2.0 и OpenGL 3.0 и 4.0 есть существенные различия.
Как уже писали другие, ES был написан для встроенных систем. Он также представляет собой первую «уборку дома» спецификации GL с момента ее появления. В OpenGL было а) много способов сделать одно и то же (например, вы могли нарисовать квадрат / прямоугольник двумя разными способами и размножить пиксельное изображение двумя разными способами и т. Д.). ES проще, чем OpenGL, с меньшим количеством функций, как общее утверждение, потому что он разработан для менее сложного оборудования.
Я призываю вас не смотреть на OpenGL ES 1.1, поскольку это прошлое и не отражает архитектурное развитие OpenGL или OpenGL ES в будущем.
Терминология и версии довольно запутаны (особенно для новичков). Для более целостного представления об OpenGL и OpenGL-ES (GLES) см. OpenGL - Then and Now .
Основное различие между ними заключается в том, что OpenGL ES предназначен для встроенных систем, таких как смартфоны, а OpenGL - для настольных компьютеров. На уровне кодирования OpenGL ES не поддерживает функции с фиксированными функциями, такие как glBegin / glEnd и т. Д. OpenGL может поддерживать конвейер с фиксированными функциями (с использованием профиля совместимости).
Современный ответ для ES 3.0 по сравнению с OpenGL 4.6 сильно отличается от принятого ответа. Теперь все, что связано с фиксированным конвейером, ушло.
OpenGL ES - это просто OpenGL api для встроенных систем (OpenGL ES относится к встроенным системам OpenGL). так что это подмножество OpenGL и широко используется в сотовых телефонах и некоторых системах виртуальной реальности, оно предназначено для менее сложного оборудования. 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 - это настольная версия, а opengl es - для встраиваемых систем, таких как сотовые телефоны, где ограничения памяти и производительности больше, чем у компьютеров. opengl es было бы труднее использовать.
OpenGL - это API-интерфейс для 2D- и 3D-графики, обеспечивающий тысячи приложений для самых разных компьютерных платформ.
OpenGL ES - это четко определенные подмножества настольного OpenGL.
OpenGL® ES - это бесплатный кроссплатформенный API для полнофункциональной 2D и 3D графики во встроенных системах, включая консоли, телефоны, бытовую технику и транспортные средства. Он состоит из четко определенных подмножеств настольного OpenGL, ...
Ответы:
Посмотрите здесь: OpenGL_ES
источник
OpenGL ES - это opengl api для встраиваемых систем. Он проще, чем обычный opengl, с точки зрения количества функций api, но может быть сложнее в использовании, поскольку вам придется использовать буферы вершин и писать больше шейдеров.
Когда вы используете обычный opengl, вы можете использовать glBegin и glEnd для включения геометрических примитивов, которые вам нужно нарисовать, но при использовании Opengl ES вам придется использовать буферы вершин. Я думаю, это из соображений производительности.
В настоящее время существует две версии Opengl ES: версия 1.1 может поддерживать только фиксированный конвейер рендеринга, а версия 2.0 поддерживает шейдер glsl. Однако у него нет фиксированного конвейера рендеринга. Другими словами, вам придется написать свой шейдер для всего.
Opengl ES в основном используется на мобильных телефонах и в Интернете (webgl). Согласно спецификации, ваш настольный драйвер opengl может поддерживать все opengl es apis.
источник
Так же, как добавить, что OpenGL 3.3 и OpenGL ES 2.0 в основном совместимы, используя подмножество функций OpenGL 3.3. Мой собственный движок C ++ использует те же вызовы API с некоторыми определениями для Android / IOS / Windows / OSX / Linux.
Среди ключевых отличий:
Есть также много других отличий, но это покрывает несколько важных.
источник
OpenGL ES означает, что открытая графическая библиотека для встраиваемых систем (OpenGL ES или GLES) является подмножеством прикладного программного интерфейса (API) рендеринга компьютерной графики OpenGL для рендеринга 2D и 3D компьютерной графики, например, используемой в видеоиграх, обычно с аппаратным ускорением с использованием графический процессор (GPU). Он разработан для встраиваемых систем, таких как смартфоны, компьютерные планшеты, игровые приставки и КПК.
Официальный сайт OpenGL | ES: http://www.opengl.org/
вы также можете получить дополнительную информацию в вики: 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 было а) много способов сделать одно и то же (например, вы могли нарисовать квадрат / прямоугольник двумя разными способами и размножить пиксельное изображение двумя разными способами и т. Д.). ES проще, чем OpenGL, с меньшим количеством функций, как общее утверждение, потому что он разработан для менее сложного оборудования.
Я призываю вас не смотреть на OpenGL ES 1.1, поскольку это прошлое и не отражает архитектурное развитие OpenGL или OpenGL ES в будущем.
источник
Терминология и версии довольно запутаны (особенно для новичков). Для более целостного представления об OpenGL и OpenGL-ES (GLES) см. OpenGL - Then and Now .
источник
Основное различие между ними заключается в том, что OpenGL ES предназначен для встроенных систем, таких как смартфоны, а OpenGL - для настольных компьютеров. На уровне кодирования OpenGL ES не поддерживает функции с фиксированными функциями, такие как glBegin / glEnd и т. Д. OpenGL может поддерживать конвейер с фиксированными функциями (с использованием профиля совместимости).
источник
Современный ответ для ES 3.0 по сравнению с OpenGL 4.6 сильно отличается от принятого ответа. Теперь все, что связано с фиксированным конвейером, ушло.
ES для ВСТРОЕННЫХ СИСТЕМ гораздо менее надежен.
источник
OpenGL ES - это просто OpenGL api для встроенных систем (OpenGL ES относится к встроенным системам OpenGL). так что это подмножество OpenGL и широко используется в сотовых телефонах и некоторых системах виртуальной реальности, оно предназначено для менее сложного оборудования. 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 - это настольная версия, а opengl es - для встраиваемых систем, таких как сотовые телефоны, где ограничения памяти и производительности больше, чем у компьютеров. opengl es было бы труднее использовать.
источник
OpenGL - это API-интерфейс для 2D- и 3D-графики, обеспечивающий тысячи приложений для самых разных компьютерных платформ.
OpenGL ES - это четко определенные подмножества настольного OpenGL.
См. Эту ссылку .
PS
WebGL разделяет спецификацию с OpenGL ES, то есть, если вы изучили настольный OpenGL, легко изучить другие (OpenGL ES, WebGL).
источник