Recursos ausentes do WebGL e OpenGL ES

10

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 é glPushMatrixe glPopMatrix. Não os vejo no WebGL, mas nas minhas pesquisas também não os encontro no material do OpenGL ES.

Chris Smith
fonte

Respostas:

9

O wiki do WebGL continha uma seção em sua hierarquia de perguntas frequentes sobre " Diferenças do WebGL e OpenGL ", que parece focar nas diferenças no WebGL das implementações do OpenGL "desktop" e, infelizmente, não é muito detalhada (principalmente sobre comportamento, não sobre a API) .

Se isso não entrar em detalhes suficientes para você, talvez seja necessário comparar o rascunho WebGL mais recente com as especificações OpenGL ES ou OpenGL manualmente.


fonte
9

Você verificou o rascunho mais recente do WebGL?

De acordo com o rascunho em caso de contradição, a especificação OpenGL ES 2.0 é a autoridade final.

O capítulo 6 descreve as diferenças do OpenGL ES 2.0 para o WebGL.

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

Tadeu Maia
fonte
Você teve uma boa resposta, que eu votei, mas aceitou a outra resposta porque indicava outros recursos para verificar. Obrigado pela ajuda.
Chris Smith
0

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, glVertexetc, 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?

gman
fonte