Один из способов взглянуть на это - 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) добавлены вычислительные шейдеры (возможность фрагментного шейдера выполнять запись в произвольном доступе). Фрагментные шейдеры могут записывать только те фрагменты / пиксели, которые запрашиваются у них в данный момент, тогда как вычисляют шейдеры и пишут где угодно.
Какие еще функции вы хотели использовать?