Отсутствующие функции в WebGL и OpenGL ES

10

Я начал использовать WebGL и доволен тем, как легко использовать мой опыт OpenGL (и, соответственно, OpenGL ES). Тем не менее, мое понимание таково:

  • OpenGL ES является подмножеством OpenGL
  • WebGL является подмножеством OpenGL ES

Это правильно для обоих случаев? Если да, есть ли ресурсы для детализации, какие функции отсутствуют?

Например, одной заметной отсутствующей функцией является glPushMatrixи glPopMatrix. Я не вижу их в WebGL, но в своих поисках я не могу найти их ссылки в материалах OpenGL ES.

Крис Смит
источник

Ответы:

9

WebGL вики содержится раздел в его Справка иерархии для « WebGL и OpenGL Differences » , который , кажется , чтобы сосредоточиться на различиях в WebGL от «настольных» реализаций OpenGL и, увы, не очень подробно ( в основном речь идет о поведении, а не API) ,

Если это недостаточно подробно для вас, вам, возможно, придется сравнить последний черновик WebGL со спецификациями OpenGL ES или OpenGL вручную.


источник
9

Вы проверили последнюю версию черновика WebGL?

Согласно проекту в случае противоречия, спецификация OpenGL ES 2.0 является окончательным авторитетом.

Глава 6 описывает отличия от OpenGL ES 2.0 до WebGL.

http://www.khronos.org/registry/webgl/specs/latest/

Тадеу Майя
источник
У вас был хороший ответ, за который я проголосовал, но принял другой ответ, потому что он указал другие ресурсы для проверки. Спасибо за вашу помощь.
Крис Смит
0

Один из способов взглянуть на это - WebGL - это OpenGL ES 2.0, а OpenGL ES 2.0 - это OpenGL, в котором все устаревшие версии удалены.

Поскольку шейдеры были добавлены все наследие фиксированной функции трубопровода glPushMatrix, glLight, и glVertexт.д. все не имеет смысла держать вокруг.

Так являются ли эти «недостающие» функции или правильно и должным образом «устаревшими» функциями?

Какие особенности вы ищете?

WebGL / OpenGL ES 2.0 - это базовые вершинные и фрагментные шейдеры. Имеется ограниченная поддержка текстур, не поддерживающих степень 2, и только несколько форматов текстур (на самом деле ограничение не составляет 99% всех текстур RGB8 или RGBA8). Поддержка текстур с плавающей точкой является необязательной, но большинство устройств поддерживают их. Однако поддержка рендеринга в текстуры с плавающей точкой встречается реже. Мало кто из мобильных устройств поддерживает рендеринг в текстуру с плавающей точкой.

WebGL2 (только что поставленный) и OpenGL ES 3.0 добавили массу новых форматов текстур, включая целочисленные текстуры и 3D-текстуры. Это убрало пределы текстуры не-степени-2. Добавлена ​​обратная связь преобразования (возможность для вершинного шейдера писать в буфер). Также добавлены окклюзионные запросы. Vertex Array Objects являются стандартными (они были необязательны в WebGL / ES 3.0). Есть куча других более мелких особенностей.

В ES 3.1 (и, вероятно, в следующей версии WebGL) добавлены вычислительные шейдеры (возможность фрагментного шейдера выполнять запись в произвольном доступе). Фрагментные шейдеры могут записывать только те фрагменты / пиксели, которые запрашиваются у них в данный момент, тогда как вычисляют шейдеры и пишут где угодно.

Какие еще функции вы хотели использовать?

GMan
источник