Spec-Zone.ru › Web APIs

Начало работы с WebGL

  • Далее

WebGL позволяет веб-контенту использовать API, основанный на OpenGL ES 2.0, для выполнения 2D и 3D отрисовки в HTML canvas в браузерах, которые его поддерживают, без использования плагинов.

Программы WebGL состоят из управляющего кода, написанного на JavaScript, и кода шейдеров (GLSL), который выполняется на графическом процессоре компьютера (GPU). Элементы WebGL могут быть смешаны с другими HTML-элементами и составлены с другими частями страницы или фоном страницы.

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

Примеры кода в этом учебнике также можно найти в папке webgl-examples на GitHub.

Стоит отметить, что эта серия статей посвящена самому WebGL; однако существует ряд фреймворков, которые обобщают возможности WebGL, что упрощает создание 3D-приложений и игр, таких как THREE.js и BABYLON.js.

Подготовка к рендерингу в 3D

Сначала создайте два новых файла:

  • "index.html"
  • "webgl-demo.js"

Файл "index.html" должен содержать следующее:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>WebGL Demo</title>
    <script src="webgl-demo.js" type="module"></script>
  </head>

  <body>
    <canvas id="gl-canvas" width="640" height="480"></canvas>
  </body>
</html>

Обратите внимание, что это объявляет холст, в который будет рисовать наша демонстрация.

Подготовка контекста WebGL

Добавьте следующий код в файл "webgl-demo.js":

main();

//
// start here
//
function main() {
  const canvas = document.querySelector("#gl-canvas");
  // Initialize the GL context
  const gl = canvas.getContext("webgl");

  // Only continue if WebGL is available and working
  if (gl === null) {
    alert(
      "Unable to initialize WebGL. Your browser or machine may not support it.",
    );
    return;
  }

  // Set clear color to black, fully opaque
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
  // Clear the color buffer with specified clear color
  gl.clear(gl.COLOR_BUFFER_BIT);
}

Функция main() вызывается при загрузке нашего скрипта. Ее цель — настроить контекст WebGL и начать рендеринг содержимого.

Первое, что мы делаем, это получаем ссылку на холст, присваивая её переменной с именем canvas.

После получения холста мы пытаемся получить WebGLRenderingContext для него, вызвав getContext() и передав ему строку "webgl". Если браузер не поддерживает WebGL, getContext() вернет null, в этом случае мы отобразим сообщение пользователю и завершим выполнение.

Если контекст успешно инициализирован, переменная gl — наша ссылка на него. В этом случае мы устанавливаем цвет очистки в черный и очищаем контекст до этого цвета (перерисовывая холст фоновым цветом).

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

Просмотреть весь код | Открыть эту демонстрацию в новой вкладке

См. также

  • WebGL Fundamentals
  • Введение в современный OpenGL: серия интересных статей о OpenGL, написанных Джо Гроффом, предоставляющих четкое введение в OpenGL от его истории до важной концепции графической трубы, а также включает примеры, демонстрирующие работу OpenGL. Если вы не знаете, что такое OpenGL, это хорошее место для начала.
  • Далее

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API