Professional Documents
Culture Documents
КГ ІО-11 Гук Дмитро КР1
КГ ІО-11 Гук Дмитро КР1
ЗВІТ
КОНТРОЛЬНА РОБОТА №1
Виконав: Перевірив:
Студент групи ІО-11 доц. каф. ІПІ
Гук Д. С. Родіонов П.Ю.
Київ 2023
Лістинг 1 – Програмний код сторінки у файлі HTML, index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script src="glMatrix.js"></script>
<script src="script.js"></script>
</body>
</html>
Лістинг 2 – Програмний код шейдерних програми, script.js
// Програми вершинного і фрагментного шейдера
const vertexShaderSource = `
void main() {
vColor = aColor;
`;
const fragmentShaderSource = `
void main() {
gl_FragColor = vColor;
`;
Лістинг 3 – Програмний код створення шейдерної програми, компіляції та
лінкування шейдерів, script.js
// Створення і кампілація шейдерів
gl.shaderSource(shader, source);
gl.compileShader(shader);
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
gl.deleteShader(shader);
return null;
return shader;
gl.attachShader(shaderProgram, vertexShader);
gl.attachShader(shaderProgram, fragmentShader);
gl.linkProgram(shaderProgram);
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
gl.useProgram(shaderProgram);
Лістинг 4 – Масиви та буфери масивів, script.js
// Створення і кампілація шейдерів
gl.shaderSource(shader, source);
gl.compileShader(shader);
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
gl.deleteShader(shader);
return null;
return shader;
gl.attachShader(shaderProgram, vertexShader);
gl.attachShader(shaderProgram, fragmentShader);
gl.linkProgram(shaderProgram);
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
gl.useProgram(shaderProgram);
Лістинг 5 – посилання на атрибути, створення матриць та налаштування
буферів, script.js
// Посилання на атрибути aPosition та aColor у шейдері
gl.enableVertexAttribArray(positionAttribute);
gl.enableVertexAttribArray(colorAttribute);
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
let angleX = 0;
let angleY = 0;
function drawScene() {
angleX += 0.005;
angleY += 0.005;
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
mat4.fromYRotation(modelViewMatrix, angleX);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
requestAnimationFrame(drawScene);
gl.enable(gl.DEPTH_TEST);
drawScene();
Результати програми