WebGL - Contexto

Para escrever um aplicativo WebGL, a primeira etapa é obter o objeto de contexto de renderização WebGL. Este objeto interage com o buffer de desenho WebGL e pode chamar todos os métodos WebGL. As seguintes operações são realizadas para obter o contexto WebGL -

  • Crie uma tela HTML-5
  • Obtenha o ID da tela
  • Obtenha WebGL

Criação de elemento HTML-5 Canvas

No Capítulo 5, discutimos como criar um elemento de tela HTML-5. No corpo do documento HTML-5, escreva uma tela, dê um nome a ela e passe-a como um parâmetro para o id do atributo. Você pode definir as dimensões da tela usando os atributos de largura e altura (opcional).

Exemplo

O exemplo a seguir mostra como criar um elemento de tela com as dimensões 500 × 500. Criamos uma borda para a tela usando CSS para visibilidade. Copie e cole o seguinte código em um arquivo com o nomemy_canvas.html.

<!DOCTYPE HTML>
<html>
   <head>
      <style>
         #mycanvas{border:1px solid blue;}
      </style>
   </head>
   <body>
      <canvas id = "mycanvas" width = "300" height = "300"></canvas>
   </body>
</html>

Isso produzirá o seguinte resultado -

Obtenha o ID da tela

Depois de criar a tela, você deve obter o contexto WebGL. A primeira coisa a fazer para obter um contexto de desenho WebGL é obter o id do elemento de tela atual.

O ID da tela é adquirido chamando o método DOM (Document Object Model) getElementById(). Este método aceita um valor de string como parâmetro, portanto, passamos o nome da tela atual para ele.

Por exemplo, se o nome da tela for my_canvas, então o ID da tela é obtido conforme mostrado abaixo−

var canvas = document.getElementById('my_Canvas');

Obtenha o contexto de desenho WebGL

Para obter o objeto WebGLRenderingContext (ou objeto de contexto de desenho WebGL ou simplesmente contexto WebGL), chame o getContext() método da corrente HTMLCanvasElement. A sintaxe de getContext () é a seguinte -

canvas.getContext(contextType, contextAttributes);

Passe as cordas webgl ou experimental-webgl Enquanto o contentType. ocontextAttributesparâmetro é opcional. (Ao prosseguir com esta etapa, certifique-se de que seu navegador implemente WebGL versão 1 (OpenGL ES 2.0)).

O fragmento de código a seguir mostra como obter o contexto de renderização WebGL. Aquigl é a variável de referência para o objeto de contexto obtido.

var canvas = document.getElementById('my_Canvas');
var gl = canvas.getContext('experimental-webgl');

WebGLContextAttributes

O parâmetro WebGLContextAttributesnão é obrigatório. Este parâmetro fornece várias opções que aceitam valores booleanos conforme listado abaixo -

Sr. Não. Atributos e descrição
1

Alpha

Se seu valor for verdadeiro, ele fornece um buffer alfa para a tela.

Por padrão, seu valor é verdadeiro.

2

depth

Se o valor for verdadeiro, você obterá um buffer de desenho que contém um buffer de profundidade de pelo menos 16 bits.

Por padrão, seu valor é verdadeiro.

3

stencil

Se o valor for verdadeiro, você obterá um buffer de desenho que contém um buffer de estêncil de pelo menos 8 bits.

Por padrão, seu valor é falso.

4

antialias

Se o valor for verdadeiro, você obterá um buffer de desenho que executa o anti-aliasing.

Por padrão, seu valor é verdadeiro.

5

premultipliedAlpha

Se o valor for verdadeiro, você obterá um buffer de desenho que contém cores com alfa pré-multiplicado.

Por padrão, seu valor é verdadeiro.

6

preserveDrawingBuffer

Se o valor for verdadeiro, os buffers não serão apagados e preservarão seus valores até que sejam apagados ou substituídos pelo autor.

Por padrão, seu valor é falso.

O seguinte snippet de código mostra como criar um contexto WebGL com um buffer de estêncil, que não funcionará anti-aliasing.

var canvas = document.getElementById('canvas1');
var context = canvas.getContext('webgl', { antialias: false, stencil: true });

No momento da criação do WebGLRenderingContext, um buffer de desenho é criado. O objeto Context gerencia o estado OpenGL e renderiza no buffer de desenho.

WebGLRenderingContext

É a interface principal do WebGL. Ele representa o contexto de desenho WebGL. Esta interface contém todos os métodos usados ​​para realizar várias tarefas no buffer de desenho. Os atributos desta interface são fornecidos na tabela a seguir.

Sr. Não. Atributos e descrição
1

Canvas

Esta é uma referência ao elemento canvas que criou este contexto.

2

drawingBufferWidth

Este atributo representa a largura real do buffer de desenho. Pode ser diferente do atributo de largura do HTMLCanvasElement.

3

drawingBufferHeight

Este atributo representa a altura real do buffer de desenho. Pode ser diferente do atributo de altura do HTMLCanvasElement.