| 131 | } |
| 132 | |
| 133 | export function createProgram(gl: WebGLRenderingContext, vertexShader: WebGLShader, fragmentShader: WebGLShader): WebGLProgram | null { |
| 134 | const program = gl.createProgram(); |
| 135 | if (!program) return null; |
| 136 | |
| 137 | gl.attachShader(program, vertexShader); |
| 138 | gl.attachShader(program, fragmentShader); |
| 139 | gl.linkProgram(program); |
| 140 | |
| 141 | if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { |
| 142 | console.error('Program linking error:', gl.getProgramInfoLog(program)); |
| 143 | gl.deleteProgram(program); |
| 144 | return null; |
| 145 | } |
| 146 | |
| 147 | return program; |
| 148 | } |
| 149 | |
| 150 | export function setupWebGL(canvas: HTMLCanvasElement): { |
| 151 | gl: WebGLRenderingContext; |