.. _`sec:webgl`: Desenhando com o WebGL ====================== Para saber mais recomendamos a seguinte leitura: - `Fundamentos da WebGL2 `__ .. container:: :name: opengl-e-webgl .. rubric:: OpenGL e WebGL :name: opengl-e-webgl Na década de 1990, os computadores da Silicon Graphics (SGI) dominavam o mercado de máquinas para criação de gráficos em 3D. O modelo IRIS da SGI utilizava a API (*Application Programming Interface* ou interface de programação da aplicação) gráfica IRIS GL que veio a se tornar a primeira versão do `OpenGL (Open Graphics Library) `__ em 1992. Esse padrão evolui bastante ao longo das décadas e sua versão mais recente, a 4.6, foi lançada em 2017. O OpenGL é hoje a principal API tanto para 2D quanto para 3D, portável para múltiplas plataformas e agregada a várias linguagens como C, Java e Javascript. O WebGL surgiu da agregação do Javascript com o OpenGL e se tornou um novo padrão para geração de gráficos interativos na Web. A primeira versão do WebGL foi derivada inicialmente do padrão OpenGL ES 2.0 mantido pelo grupo `Khronos `__, onde o OpenGL ES (*Embeded System*) é uma versão do OpenGL voltada para sistemas gráficos embarcados como telefones celulares e consoles de jogos. A versão mais recente, WebGL 2 lançada em 2017, é derivada do padrão OpenGL ES 3.0 e já é compatível com os principais navegadores com Google Chrome, Mozilla Firefox e Opera. Uma característica surgida a partir do padrão OpenGL 2.0 foram as funções de sombreamento (**shaders**). Essas funções tornam possível programar efeitos visuais sofisticados usando uma **linguagem de sombreamento** (*shading language*) baseada no OpenGL Shading Language (GLSL). Algumas vantages de usar WebGL são: - **Programação JavaScript** - os aplicativos WebGL são escritos em JavaScript. Usando estes aplicativos, é possível interagir diretamente com outros elementos do documento HTML, inclusive outras bibliotecas JavaScript (como JQuery) e tecnologias HTML. - **Suporte para navegadores em dispositivos móveis** - o WebGL também oferece suporte a navegadores móveis, como iOS e Android. - **Código aberto** - o WebGL é um código aberto (Open Source). Você pode acessar o código-fonte da biblioteca e entender como funciona e como foi desenvolvido. - **Não há necessidade de compilação** - para executar JavaScript não há necessidade de compilar o arquivo, que pode ser aberto diretamente em qualquer navegador compatível com HTML 5. - **Gerenciamento automático de memória** - o JavaScript oferece suporte ao gerenciamento automático de memória. Não há necessidade de alocação manual de memória. O WebGL herda esse recurso de JavaScript. - **Fácil de configurar** - como o WebGL é integrado ao HTML 5, não há necessidade de configuração, basta um editor de texto e um navegador web.