Создание окна

До HTML5, если вы хотели отобразить картинку на веб-странице, то этом можно было сделать только с помощью тега img. Но этот тег позволял отобразить только статическую картинку. Именно по этой причине использовались сторонние решения, такие как Flash Player. Однако с выходом HTML5, появился тег canvas, который предложил удобный способ рисования динамической графики. Ниже представлен пример создания окна и инициализации WebGL 2.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title> WebGL </title>
</head>
<body onload="start()">
<canvas id="glcanvas" width="600" height="400">
Используйте браузер который поддерживает "canvas"
</canvas>
<script>
var gl;
function start() {
  var canvas = document.getElementById("glcanvas");
  gl = initWebGL(canvas);
  if (gl) {
    gl.clearColor(0.0, 0.0, 0.0, 1.0);
    gl.enable(gl.DEPTH_TEST);
    gl.depthFunc(gl.LEQUAL);
    gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);
  }
  else {
    retutn;
  }
}
function initWebGL(canvas) {
  gl = null;
  try {
    gl = canvas.getContext("webgl2") || canvas.getContext("webgl");
  }
  catch(e) {}
  if (!gl) {
    alert("WebGl отключён или ваш браузер не поддерживает его.");
    gl = null;
  }
  return gl;
}
</script>
</body>
</html>

Рассмотрим этот пример подробнее. В теге body, мы определяем обработчик событий onload, который вызывает функцию start(), после того как содержимое этого тега полностью загрузится. Тег canvas создаёт область размером 600x400 пикселей и идентификатором glcanvas. Содержимое этого тега будет отображено на странице в том случае, если браузер не поддерживает canvas. Далее загружается скрипт с функциями для инициации WebGL. Глобальная переменная gl предназначена для хранения контекста WebGL 2, при условии, что контекст включён и поддерживается браузером.

Рассмотрим функцию start(). Сначала мы ищем на странице элемент с идентификатором glcanvas, а результат помещаем в переменную canvas. Затем передаём функции initWebGl() значение переменной canvas. Функция initWebGl() пытается получить контекст webgl2. Если контекст не получилось извлеч, то мы сообщаем об этом и возвращаем null, иначе возвращем полученный контекст. Если у нас получилось извлечь контекст, то мы вызываем ряд процедур. Функция clearColor() устанавливает цвет для очистки экрана. Функция enable() включает возможности WebGL, которые передаются в виде параметра. Функция depthFunc() определяет работу буфера глубины. Функция clear() очищает буферы, которые передаются в качестве параметра.

Ниже представлен результат этого примера, который создаёт окно и закрашивает его чёрным цветом.

Please use a browser that supports "canvas"
  < НАЗАД | ДАЛЕЕ >