WebGL является веб-стандартом, который позволяет использовать мощь графического процессора (GPU) для создания интерактивных 3D-график и 2D-график на веб-странице. В данной статье мы рассмотрим основы использования WebGL и создания сайта с 3D-графикой.
Шаг 1: Подключение WebGL
Для начала работы с WebGL, вам нужно создать HTML-файл и подключить в нем тег <canvas>
, который будет использоваться для отображения графики:
<!DOCTYPE html>
<html>
<head>
<title>WebGL 3D-графика</title>
</head>
<body>
<canvas id="webglCanvas"></canvas>
</body>
</html>
Шаг 2: Инициализация WebGL
Теперь, когда у вас есть тег <canvas>
, нужно инициализировать WebGL. Для этого создайте JavaScript-файл и подключите его в HTML-файле. В этом файле выполните следующий код:
const canvas = document.getElementById('webglCanvas'); const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); if (!gl) { alert('Ваш браузер не поддерживает WebGL'); }
Шаг 3: Создание шейдеров
Шейдеры — это небольшие программы, которые выполняются на GPU и определяют, как объекты будут отображаться на экране. Создайте два шейдера — вершинный (вершины 3D-модели) и фрагментный (обработка цвета и текстур):
const vertexShaderSource = ` attribute vec4 a_position; void main() { gl_Position = a_position; } `; const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1, 0, 0, 1); // красный цвет } `;
Шаг 4: Компиляция шейдеров и создание программы
Компилируйте оба шейдера и создайте программу для их использования:
function createShader(gl, type, source) { const shader = gl.createShader(type); gl.shaderSource(shader, source); gl.compileShader(shader); const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS); if (success) { return shader; } console.log(gl.getShaderInfoLog(shader)); gl.deleteShader(shader); } const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource); const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource); const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program);
Шаг 5: Создание буфера вершин
Создайте буфер вершин, который будет хранить координаты вершин для вашего объекта:
const positionBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); const positions = [ -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, ]; gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);
Шаг 6: Отрисовка объекта
Привяжите все данные и отрисуйте ваш объект на экране:
gl.clearColor(0, 0, 0, 1); gl.clear(gl.COLOR_BUFFER_BIT); gl.useProgram(program); const positionAttributeLocation = gl.getAttribLocation(program, "a_position"); gl.enableVertexAttribArray(positionAttributeLocation); gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
Теперь у вас должен быть создан простой сайт с использованием WebGL для 3D-графики, который отображает красный квадрат на черном фоне.
😉 Не забывайте изучать дополнительные материалы и практиковаться, чтобы улучшить свои навыки в создании 3D-графики с использованием WebGL.
Добавить комментарий