| 115 | `; |
| 116 | |
| 117 | export function createShader(gl: WebGLRenderingContext, type: number, source: string): WebGLShader | null { |
| 118 | const shader = gl.createShader(type); |
| 119 | if (!shader) return null; |
| 120 | |
| 121 | gl.shaderSource(shader, source); |
| 122 | gl.compileShader(shader); |
| 123 | |
| 124 | if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { |
| 125 | console.error('Shader compilation error:', gl.getShaderInfoLog(shader)); |
| 126 | gl.deleteShader(shader); |
| 127 | return null; |
| 128 | } |
| 129 | |
| 130 | return shader; |
| 131 | } |
| 132 | |
| 133 | export function createProgram(gl: WebGLRenderingContext, vertexShader: WebGLShader, fragmentShader: WebGLShader): WebGLProgram | null { |
| 134 | const program = gl.createProgram(); |