В чем разница между OpenGL ES и OpenGL?
В чем разница между OpenGL ES и OpenGL?
Ответы:
Двумя наиболее существенными различиями между OpenGL ES и OpenGL являются удаление семантики вызова glBegin ... glEnd для примитивного рендеринга (в пользу массивов вершин) и введение типов данных с фиксированной точкой для координат и атрибутов вершин для лучшей поддержки вычислительные возможности встроенных процессоров, которым часто не хватает FPU
Посмотрите здесь: 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 может поддерживать конвейер с фиксированными функциями (с использованием профиля совместимости).
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 - это API-интерфейс для 2D- и 3D-графики, обеспечивающий тысячи приложений для самых разных компьютерных платформ.
OpenGL ES - это четко определенные подмножества настольного OpenGL.
OpenGL® ES - это бесплатный кроссплатформенный API для полнофункциональной 2D и 3D графики во встроенных системах, включая консоли, телефоны, бытовую технику и транспортные средства. Он состоит из четко определенных подмножеств настольного OpenGL, ...
См. Эту ссылку .
PS
WebGL разделяет спецификацию с OpenGL ES, то есть, если вы изучили настольный OpenGL, легко изучить другие (OpenGL ES, WebGL).