Comecei a usar o WebGL e estou satisfeito com a facilidade de aproveitar minha experiência com o OpenGL (e, por extensão, OpenGL ES). No entanto, meu entendimento é o seguinte:
- OpenGL ES é um subconjunto do OpenGL
- WebGL é um subconjunto do OpenGL ES
Isso está correto nos dois casos? Em caso afirmativo, existem recursos para detalhar quais recursos estão ausentes?
Por exemplo, um recurso ausente notável é glPushMatrix
e glPopMatrix
. Não os vejo no WebGL, mas nas minhas pesquisas também não os encontro no material do OpenGL ES.
Encontrei um ótimo recurso para comparar quais APIs específicas estão disponíveis em diferentes versões do OpenGL / WebGL / OpenGL ES.
Acho que você encontrará o que está procurando aqui: http://web.eecs.umich.edu/~sugih/courses/eecs487/common/notes/APITables.xml
fonte
Uma maneira de ver isso é o WebGL é o OpenGL ES 2.0 e o OpenGL ES 2.0 é o OpenGL, com todo o patrimônio herdado removido.
Desde shaders foram adicionados todo o legado gasoduto função fixa
glPushMatrix
,glLight
,glVertex
etc, tudo fazia sentido manter ao redor.Então, esses recursos "ausentes" ou os corretos e apropriadamente "obsoletos"?
Quais recursos específicos você está procurando?
O WebGL / OpenGL ES 2.0 é um vértice básico e sombreadores de fragmentos. Há suporte limitado para texturas sem potência de 2 e apenas alguns formatos de textura (um limite não muito grande é 99% de todas as texturas são RGB8 ou RGBA8). O suporte para texturas de ponto flutuante é opcional, mas a maioria dos dispositivos é compatível. O suporte para renderizar texturas de ponto flutuante é mais raro. Poucos ou nenhum dispositivo móvel oferece suporte à renderização para uma textura de ponto flutuante.
O WebGL2 (recém-enviado) e o OpenGL ES 3.0 adicionaram vários novos formatos de textura, incluindo textura com base em número inteiro e texturas 3D. Ele removeu os limites de textura sem potência de 2. Ele adicionou feedback de transformação (a capacidade de um sombreador de vértice gravar em um buffer). Ele também adicionou consultas de oclusão. Os objetos de matriz de vértice são padrão (eles eram opcionais no WebGL / ES 3.0). Há muitos outros recursos menores.
O ES 3.1 (e provavelmente a próxima versão do WebGL) adiciona sombreadores de computação (a capacidade de um sombreador de fragmento fazer gravações de acesso aleatório). Os shaders de fragmento só podiam gravar no fragmento / pixel solicitado no momento, enquanto os shaders de computação e gravavam em qualquer lugar que desejassem.
Quais outros recursos você deseja usar?
fonte