From 0c1bbcbf08d44a04d668aa2b8d9c565420679a28 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Thu, 13 Oct 2022 11:59:33 +0300 Subject: [WGL] Added first homework --- .../Homework 01 - Fix me please/Homework.html | 52 ++++++++++++++++ .../Homework 01 - Fix me please/webgl-fmi.js | 69 ++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/Homework.html create mode 100644 Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/webgl-fmi.js diff --git a/Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/Homework.html b/Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/Homework.html new file mode 100644 index 0000000..d9a986a --- /dev/null +++ b/Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/Homework.html @@ -0,0 +1,52 @@ + + + + + Поправи ме, моля! + + + + + + + + + + + +

Поправи ме, моля!

+ + + + + + Искаме canvas, но няма! + + diff --git a/Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/webgl-fmi.js b/Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/webgl-fmi.js new file mode 100644 index 0000000..8b1aa16 --- /dev/null +++ b/Year 2/Computer Graphics with WebGL/Homework 01 - Fix me please/webgl-fmi.js @@ -0,0 +1,69 @@ + +var gl; // глобален WebGL контекст +var glprog; // глобална GLSL програма + + +// връща WebGL контекст, свързан с HTML елемент с даден id +function getContext(id) +{ + var canvas = document.getElementById(id); + if (!canvas) + { + alert("Искаме canvas с id=\""+id+"\", а няма!"); + return null; + } + + var context = canvas.getContext("webgl"); + if (!context) + { + context = canvas.getContext("experimental-webgl"); + } + + if (!context) + { + alert("Искаме WebGL контекст, а няма!"); + } + + return context; +} + +// връща компилиран шейдър +function getShader(id,type) +{ + var source = document.getElementById(id).text; + var shader = gl.createShader(type); + + gl.shaderSource(shader,source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader,gl.COMPILE_STATUS)) + { + alert(gl.getShaderInfoLog(shader)); + return null; + } + + return shader; +} + + +// връща готова програма +function getProgram(idv,idf) +{ + var vShader = getShader(idv,gl.VERTEX_SHADER); + var fShader = getShader(idf,gl.FRAGMENT_SHADER); + + if (!vShader || !fShader) {return null;} + + var shaderProgram = gl.createProgram(); + gl.attachShader(shaderProgram,vShader); + gl.attachShader(shaderProgram,fShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram,gl.LINK_STATUS)) + { + alert(gl.getProgramInfoLog(shaderProgram)); + return null; + } + + gl.useProgram(shaderProgram); + return shaderProgram; +} -- cgit v1.3.1-23-gd82d