Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Here's an HTML file that draws a triangle using WebGL and makes the canvas take up the full page:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> const canvas = document.getElementById('glCanvas'); const gl = canvas.getContext('webgl'); // Vertex shader source code const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); } `; // Fragment shader source code const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create shaders const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create program and attach shaders const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); gl.useProgram(program); // Set up triangle vertices const vertices = new Float32Array([ -0.5, -0.5, 0.5, -0.5, 0.0, 0.5 ]); // Create buffer and bind vertices const buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // Get position attribute location and enable it const positionAttribute = gl.getAttribLocation(program, 'a_position'); gl.enableVertexAttribArray(positionAttribute); gl.vertexAttribPointer(positionAttribute, 2, gl.FLOAT, false, 0, 0); // Set clear color and clear the canvas gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> const canvas = document.getElementById('glCanvas'); const gl = canvas.getContext('webgl'); // Vertex shader source code const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); } `; // Fragment shader source code const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create shaders const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create program and attach shaders const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); gl.useProgram(program); // Set up triangle vertices const vertices = new Float32Array([ -0.5, -0.5, 0.5, -0.5, 0.0, 0.5 ]); // Create buffer and bind vertices const buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // Get position attribute location and enable it const positionAttribute = gl.getAttribLocation(program, 'a_position'); gl.enableVertexAttribArray(positionAttribute); gl.vertexAttribPointer(positionAttribute, 2, gl.FLOAT, false, 0, 0); // Set clear color and clear the canvas gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
Rendering the webpage gives the following image:
This is a screenshot of a webpage that draws something with webgl. I'm trying to see if it drew what I wanted. Describe what is drawn in this image?
The image shows a simple red triangle centered horizontally on a black background. The triangle is pointing upwards, and its base is parallel to the bottom edge of the image. There are no other visible elements or details within the triangle or the surrounding area.
Does this answer say that there is a picture of a triangle "The image shows a simple red triangle centered horizontally on a black background. The triangle is pointing upwards, and its base is parallel to the bottom edge of the image. There are no other visible elements or details within the triangle or the surrounding area."? Answer "Yes it does" or "No it does not".
Yes it does.
Testing if the previous output contains the string es it does
: True
Testing if the previous output contains the string THREE.
: False
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Here's an HTML file that draws a triangle using WebGL and makes the canvas take up the full page:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById("glCanvas"); // Get the WebGL context const gl = canvas.getContext("webgl"); // Set the clear color to black gl.clearColor(0.0, 0.0, 0.0, 1.0); // Clear the canvas gl.clear(gl.COLOR_BUFFER_BIT); // Define the vertices of the triangle const vertices = [ -0.5, -0.5, 0.5, -0.5, 0.0, 0.5 ]; // Create a buffer to store the vertices const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // Vertex shader source code const vertexShaderSource = ` attribute vec2 position; void main() { gl_Position = vec4(position, 0.0, 1.0); } `; // Create a vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Fragment shader source code const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create a fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create a shader program and attach the shaders const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); // Use the shader program gl.useProgram(program); // Get the attribute location const positionAttributeLocation = gl.getAttribLocation(program, "position"); gl.enableVertexAttribArray(positionAttributeLocation); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById("glCanvas"); // Get the WebGL context const gl = canvas.getContext("webgl"); // Set the clear color to black gl.clearColor(0.0, 0.0, 0.0, 1.0); // Clear the canvas gl.clear(gl.COLOR_BUFFER_BIT); // Define the vertices of the triangle const vertices = [ -0.5, -0.5, 0.5, -0.5, 0.0, 0.5 ]; // Create a buffer to store the vertices const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // Vertex shader source code const vertexShaderSource = ` attribute vec2 position; void main() { gl_Position = vec4(position, 0.0, 1.0); } `; // Create a vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Fragment shader source code const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create a fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create a shader program and attach the shaders const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); // Use the shader program gl.useProgram(program); // Get the attribute location const positionAttributeLocation = gl.getAttribLocation(program, "position"); gl.enableVertexAttribArray(positionAttributeLocation); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
Rendering the webpage gives the following image:
This is a screenshot of a webpage that draws something with webgl. I'm trying to see if it drew what I wanted. Describe what is drawn in this image?
The image shows a simple red triangle with a solid fill color against a black background. The triangle is oriented with its base parallel to the bottom of the image and its apex pointing upwards.
Does this answer say that there is a picture of a triangle "The image shows a simple red triangle with a solid fill color against a black background. The triangle is oriented with its base parallel to the bottom of the image and its apex pointing upwards."? Answer "Yes it does" or "No it does not".
Yes it does.
Testing if the previous output contains the string es it does
: True
Testing if the previous output contains the string THREE.
: False
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Here's an HTML file that draws a triangle using WebGL and makes the canvas take up the full page:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById("glCanvas"); // Get the WebGL context const gl = canvas.getContext("webgl"); // Define the vertex shader const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); } `; // Define the fragment shader const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create the vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Create the fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create the shader program const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); gl.useProgram(program); // Set up the triangle vertices const vertices = [ -0.5, -0.5, 0.5, -0.5, 0.0, 0.5 ]; // Create a buffer for the vertices const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // Get the attribute location const positionAttributeLocation = gl.getAttribLocation(program, "a_position"); gl.enableVertexAttribArray(positionAttributeLocation); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); // Clear the canvas gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById("glCanvas"); // Get the WebGL context const gl = canvas.getContext("webgl"); // Define the vertex shader const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); } `; // Define the fragment shader const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create the vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Create the fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create the shader program const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); gl.useProgram(program); // Set up the triangle vertices const vertices = [ -0.5, -0.5, 0.5, -0.5, 0.0, 0.5 ]; // Create a buffer for the vertices const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // Get the attribute location const positionAttributeLocation = gl.getAttribLocation(program, "a_position"); gl.enableVertexAttribArray(positionAttributeLocation); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); // Clear the canvas gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
Rendering the webpage gives the following image:
This is a screenshot of a webpage that draws something with webgl. I'm trying to see if it drew what I wanted. Describe what is drawn in this image?
The image shows a simple red triangle with a solid fill against a black background. The triangle is oriented with one vertex pointing upwards and the base parallel to the bottom of the image frame.
Does this answer say that there is a picture of a triangle "The image shows a simple red triangle with a solid fill against a black background. The triangle is oriented with one vertex pointing upwards and the base parallel to the bottom of the image frame."? Answer "Yes it does" or "No it does not".
Yes it does.
Testing if the previous output contains the string es it does
: True
Testing if the previous output contains the string THREE.
: False
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Here's an HTML file that draws a triangle using WebGL and makes the canvas take up the full page:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById('glCanvas'); // Get the WebGL context const gl = canvas.getContext('webgl'); // Set the clear color to black gl.clearColor(0.0, 0.0, 0.0, 1.0); // Clear the canvas gl.clear(gl.COLOR_BUFFER_BIT); // Define the vertices of the triangle const vertices = [ -0.5, -0.5, 0.0, 0.5, -0.5, 0.0, 0.0, 0.5, 0.0 ]; // Create a buffer and bind it const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); // Set the buffer data gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // Vertex shader source code const vertexShaderSource = ` attribute vec3 aVertexPosition; void main() { gl_Position = vec4(aVertexPosition, 1.0); } `; // Create a vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Fragment shader source code const fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); } `; // Create a fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create a shader program and attach the shaders const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); // Use the shader program gl.useProgram(program); // Get the attribute location const vertexPositionAttribute = gl.getAttribLocation(program, 'aVertexPosition'); // Enable the vertex attribute array gl.enableVertexAttribArray(vertexPositionAttribute); // Set the vertex attribute pointer gl.vertexAttribPointer(vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="glCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById('glCanvas'); // Get the WebGL context const gl = canvas.getContext('webgl'); // Set the clear color to black gl.clearColor(0.0, 0.0, 0.0, 1.0); // Clear the canvas gl.clear(gl.COLOR_BUFFER_BIT); // Define the vertices of the triangle const vertices = [ -0.5, -0.5, 0.0, 0.5, -0.5, 0.0, 0.0, 0.5, 0.0 ]; // Create a buffer and bind it const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); // Set the buffer data gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // Vertex shader source code const vertexShaderSource = ` attribute vec3 aVertexPosition; void main() { gl_Position = vec4(aVertexPosition, 1.0); } `; // Create a vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Fragment shader source code const fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); } `; // Create a fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create a shader program and attach the shaders const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); // Use the shader program gl.useProgram(program); // Get the attribute location const vertexPositionAttribute = gl.getAttribLocation(program, 'aVertexPosition'); // Enable the vertex attribute array gl.enableVertexAttribArray(vertexPositionAttribute); // Set the vertex attribute pointer gl.vertexAttribPointer(vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
Rendering the webpage gives the following image:
This is a screenshot of a webpage that draws something with webgl. I'm trying to see if it drew what I wanted. Describe what is drawn in this image?
The image shows a white equilateral triangle centered horizontally on a black background. The triangle is pointing upwards, and its base is parallel to the bottom edge of the image. There are no other visible elements or details within the triangle or the surrounding area.
Does this answer say that there is a picture of a triangle "The image shows a white equilateral triangle centered horizontally on a black background. The triangle is pointing upwards, and its base is parallel to the bottom edge of the image. There are no other visible elements or details within the triangle or the surrounding area."? Answer "Yes it does" or "No it does not".
Yes it does.
Testing if the previous output contains the string es it does
: True
Testing if the previous output contains the string THREE.
: False
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Draw an image of a triangle using WebGL in a single HTML file. Make the canvas take the full page.
Here's an HTML file that draws a triangle using WebGL and makes the canvas take up the full page:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="webglCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById('webglCanvas'); // Get the WebGL context const gl = canvas.getContext('webgl'); // Set the canvas size to match the window size canvas.width = window.innerWidth; canvas.height = window.innerHeight; // Set the viewport to cover the entire canvas gl.viewport(0, 0, canvas.width, canvas.height); // Vertex shader source code const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); } `; // Fragment shader source code const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create the vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Create the fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create the shader program const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); // Use the shader program gl.useProgram(program); // Set up the triangle vertices const vertices = new Float32Array([ 0.0, 0.5, -0.5, -0.5, 0.5, -0.5 ]); // Create a buffer for the vertices const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // Get the attribute location for the position const positionAttributeLocation = gl.getAttribLocation(program, 'a_position'); gl.enableVertexAttribArray(positionAttributeLocation); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); // Clear the canvas gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <!DOCTYPE html> <html> <head> <title>WebGL Triangle</title> <style> body, html { margin: 0; padding: 0; overflow: hidden; } canvas { width: 100%; height: 100%; } </style> </head> <body> <canvas id="webglCanvas"></canvas> <script> // Get the canvas element const canvas = document.getElementById('webglCanvas'); // Get the WebGL context const gl = canvas.getContext('webgl'); // Set the canvas size to match the window size canvas.width = window.innerWidth; canvas.height = window.innerHeight; // Set the viewport to cover the entire canvas gl.viewport(0, 0, canvas.width, canvas.height); // Vertex shader source code const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); } `; // Fragment shader source code const fragmentShaderSource = ` precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Create the vertex shader const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // Create the fragment shader const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // Create the shader program const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); // Use the shader program gl.useProgram(program); // Set up the triangle vertices const vertices = new Float32Array([ 0.0, 0.5, -0.5, -0.5, 0.5, -0.5 ]); // Create a buffer for the vertices const vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // Get the attribute location for the position const positionAttributeLocation = gl.getAttribLocation(program, 'a_position'); gl.enableVertexAttribArray(positionAttributeLocation); gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); // Clear the canvas gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the triangle gl.drawArrays(gl.TRIANGLES, 0, 3); </script> </body> </html> |
Rendering the webpage gives the following image:
This is a screenshot of a webpage that draws something with webgl. I'm trying to see if it drew what I wanted. Describe what is drawn in this image?
The image shows a solid red triangle centered on a black background. The triangle is equilateral, meaning all three sides are of equal length, and it is positioned with one vertex pointing upwards and the base parallel to the bottom edge of the image.
Does this answer say that there is a picture of a triangle "The image shows a solid red triangle centered on a black background. The triangle is equilateral, meaning all three sides are of equal length, and it is positioned with one vertex pointing upwards and the base parallel to the bottom edge of the image."? Answer "Yes it does" or "No it does not".
Yes it does.
Testing if the previous output contains the string es it does
: True
Testing if the previous output contains the string THREE.
: False