Основы работы с WebGL

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

Последнее обновление: 1.11.2015

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

<!DOCTYPE html>
<html>
<head>
<title>Изучаем WebGL</title>
</head>
<body>
<canvas id="canvas3D" width="400" height="300">Ваш браузер не поддерживает элемент canvas</canvas>
</body>
</html>

Теперь нам надо получить контекст WebGL. Все действие по использование функциональности WebGL будет происходить в функции javascript, которая будет срабатывать при загрузке страницы. Тут есть два способа: либо повесить функцию на обработчик onload элемента body, либо использовать window.onload.

Итак, создадим перед закрывающим тегом body элемент script и изменим страницу следующим образом:

<!DOCTYPE html>
<html>
<head>
<title>Изучаем WebGL</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="canvas3D" width="400" height="300">Ваш браузер не поддерживает элемент canvas</canvas>
<script type="text/javascript">
var gl=null; // контекст WebGL

window.onload=function(){
	// получаем элемент canvas
	var canvas = document.getElementById("canvas3D");
	try {
		// Сначала пытаемся получить стандартный контекст 
		// Если не получится, обращаемся к экспериментальному контексту
		gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
	}
	catch(e) {}
  
	// Если контекст не удалось получить, выводим сообщение
	  if (!gl) {
		alert("Ваш браузер не поддерживает WebGL");
	  }
	if(gl){
		// покрасим в серый цвет фон
		gl.clearColor(0.5, 0.5, 0.5, 1.0);
		gl.clear(gl.COLOR_BUFFER_BIT);
	}
}
</script>
</body>
</html>

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

Далее у нас идет функция, срабатывающая при загрузке страницы. Для начала мы устанавливаем контекст: gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");. Элемент canvas поддерживает два контекста: 2d (используется для простого рисования) и webgl. Естественно, нам надо получить последний контекст. Однако некоторые браузеры пока поддерживают экспериментальный контекст - experimental-webgl, поэтому в данном случае мы также пытаемся получить его, если контекст webgl не установлен.

Далее идет закраска. Метод gl.clearColor(0.5, 0.5, 0.5, 1.0) принимает значения ARGB для цвета, которым буде закрашено полотно. И чтобы осуществить закраску, вызываем метод gl.clear. (Если быть точнее, очищаем цветовой буфер, используя константу gl.COLOR_BUFFER_BIT).

Результатом работы должен быть элемент canvas, окрашенный в серый цвет.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850