Tool Request: 438651133 - create_file
{"file_name":"index.html","content":"<!DOCTYPE html>\n<html>\n<head>\n <title>Basic WebGL Demo</title>\n <style>\n canvas { border: 1px solid black; }\n </style>\n</head>\n<body>\n <canvas id=\"glcanvas\" width=\"600\" height=\"600\"></canvas>\n <script>\n const canvas = document.getElementById('glcanvas');\n const gl = canvas.getContext('webgl');\n \n if (!gl) {\n alert('WebGL not supported');\n throw new Error('WebGL not supported');\n }\n \n const vertexShaderSource = `attribute vec4 a_position;\\nvoid main() {\\n gl_Position = a_position;\\n}`;\n const fragmentShaderSource = `precision mediump float;\\nvoid main() {\\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\\n}`;\n \n function createShader(gl, type, source) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n console.error('Shader error:', gl.getShaderInfoLog(shader));\n return null;\n }\n return shader;\n }\n \n function createProgram(gl, vs, fs) {\n const program = gl.createProgram();\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.error('Program error:', gl.getProgramInfoLog(program));\n return null;\n }\n return program;\n }\n \n const vs = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource);\n const fs = createShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);\n const program = createProgram(gl, vs, fs);\n gl.useProgram(program);\n \n const positions = [\n -0.5, 0.5, 0.0,\n 0.5, 0.5, 0.0,\n 0.0, -0.5, 0.0\n ];\n \n const positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);\n \n const positionLocation = gl.getAttribLocation(program, 'a_position');\n gl.enableVertexAttribArray(positionLocation);\n gl.vertexAttribPointer(positionLocation, 3, gl.FLOAT, false, 0, 0);\n \n gl.clearColor(0.0, 0.0, 0.0, 1.0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n </script>\n</body>\n</html>"}