Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit0c1bbcbf08d44a04d668aa2b8d9c565420679a28 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-10-13 11:59:33 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-10-13 11:59:33 +0300
Filesf11b31025d488ea8d878403cff9561c8c51243d9
uni-projects-0c1bbcbf08d44a04d668aa2b8d9c565420679a28.tar
uni-projects-0c1bbcbf08d44a04d668aa2b8d9c565420679a28.tar.gz
uni-projects-0c1bbcbf08d44a04d668aa2b8d9c565420679a28.zip
Parent1236758d54f7582427095d18a66c53f51c328a7d (diff)
[WGL] Added first homework
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 @@
+<!DOCTYPE html>
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Поправи ме, моля!</title>
+
+ <script src="webgl-fmi.js"></script>
+
+ <script id="vshader" type="x-shader/x-vertex">
+ void main ()
+ {
+ gl_Position = vec4(0.935,0.9,0,1);
+ gl_PointSize = 16.0;
+ }
+ </script>
+
+ <script id="fshader" type="x-shader/x-fragment">
+ void main( )
+ {
+ gl_FragColor = vec4(0,0,1,1);
+ }
+ </script>
+
+ <script>
+ function start( )
+ {
+ /* ПОПРАВЕНО: премахнато var пред gl; променливата е вече дефинирана */
+ gl = getContext("picasso");
+ glprog = getProgram("vshader","fshader");
+
+ /* ПОПРАВЕНО: цветът на фон беше черно */
+ gl.clearColor(0.7,0.8,1,1);
+ gl.clear(gl.COLOR_BUFFER_BIT);
+
+ // рисуване на точка (детайлите - друг път)
+ gl.drawArrays(gl.POINTS,0,1);
+ }
+ </script>
+</head>
+
+<body onload="start()">
+ <h2>Поправи ме, моля!</h2>
+
+ <noscript>
+ Искаме JavaScript, но няма!
+ </noscript>
+
+ <!-- ПОПРАВЕНО: буквите "p", "c" и "o" бяха написани на кирилица -->
+ <canvas id="picasso" width="600" height="400" style="border: solid;">
+ Искаме canvas, но няма!
+ </canvas>
+</body>
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;
+}