WebGL - Контекст

Чтобы написать приложение WebGL, первым делом необходимо получить объект контекста визуализации WebGL. Этот объект взаимодействует с буфером рисования WebGL и может вызывать все методы WebGL. Для получения контекста WebGL выполняются следующие операции:

  • Создайте холст HTML-5
  • Получить идентификатор холста
  • Получить WebGL

Создание элемента холста HTML-5

В главе 5 мы обсудили, как создать элемент холста HTML-5. В теле документа HTML-5 напишите холст, дайте ему имя и передайте его в качестве параметра идентификатору атрибута. Вы можете определить размеры холста, используя атрибуты ширины и высоты (необязательно).

пример

В следующем примере показано, как создать элемент холста размером 500 × 500. Мы создали границу холста, используя CSS для видимости. Скопируйте и вставьте следующий код в файл с именемmy_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>

Это даст следующий результат -

Получите идентификатор холста

После создания холста вы должны получить контекст WebGL. Первое, что нужно сделать для получения контекста рисования WebGL, - это получить идентификатор текущего элемента холста.

Идентификатор холста получается путем вызова метода DOM (объектная модель документа) getElementById(). Этот метод принимает строковое значение в качестве параметра, поэтому мы передаем ему имя текущего холста.

Например, если имя холста my_canvas, то получается идентификатор холста, как показано ниже:

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

Получить контекст отрисовки WebGL

Чтобы получить объект WebGLRenderingContext (или объект контекста чертежа WebGL, или просто контекст WebGL), вызовите getContext() метод текущего HTMLCanvasElement. Синтаксис getContext () следующий:

canvas.getContext(contextType, contextAttributes);

Передайте струны webgl или же experimental-webgl как contentType. ВcontextAttributesпараметр не является обязательным. (Продолжая этот шаг, убедитесь, что ваш браузер поддерживает WebGL версии 1 (OpenGL ES 2.0)).

В следующем фрагменте кода показано, как получить контекст отрисовки WebGL. Вотgl является ссылочной переменной на полученный объект контекста.

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

WebGLContextAttributes

Параметр WebGLContextAttributesне обязательно. Этот параметр предоставляет различные параметры, которые принимают логические значения, как указано ниже -

Sr.No. Атрибуты и описание
1

Alpha

Если его значение истинно, он предоставляет холст альфа-буфер.

По умолчанию его значение истинно.

2

depth

Если его значение истинно, вы получите буфер рисования, который содержит буфер глубины не менее 16 бит.

По умолчанию его значение истинно.

3

stencil

Если его значение истинно, вы получите буфер рисования, который содержит буфер трафарета не менее 8 бит.

По умолчанию его значение ложно.

4

antialias

Если его значение истинно, вы получите буфер рисования, который выполняет сглаживание.

По умолчанию его значение истинно.

5

premultipliedAlpha

Если его значение истинно, вы получите буфер рисования, который содержит цвета с предварительно умноженным альфа-каналом.

По умолчанию его значение истинно.

6

preserveDrawingBuffer

Если его значение истинно, буферы не будут очищены и сохранят свои значения до тех пор, пока автор не очистит или не перезапишет их.

По умолчанию его значение ложно.

В следующем фрагменте кода показано, как создать контекст WebGL с буфером трафарета, который не будет работать. anti-aliasing.

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

Во время создания WebGLRenderingContext создается буфер рисования. Объект Context управляет состоянием OpenGL и выполняет рендеринг в буфер рисования.

WebGLRenderingContext

Это основной интерфейс в WebGL. Он представляет контекст рисования WebGL. Этот интерфейс содержит все методы, используемые для выполнения различных задач в буфере чертежа. Атрибуты этого интерфейса приведены в следующей таблице.

Sr.No. Атрибуты и описание
1

Canvas

Это ссылка на элемент холста, создавший этот контекст.

2

drawingBufferWidth

Этот атрибут представляет фактическую ширину буфера рисования. Он может отличаться от атрибута ширины HTMLCanvasElement.

3

drawingBufferHeight

Этот атрибут представляет фактическую высоту буфера рисования. Он может отличаться от атрибута высоты HTMLCanvasElement.