(gl, vertSrc, fragSrc)
| 24 | * @returns {WebGLProgram | null} |
| 25 | */ |
| 26 | export function createProgram(gl, vertSrc, fragSrc) { |
| 27 | const vert = createShader(gl, gl.VERTEX_SHADER, vertSrc) |
| 28 | const frag = createShader(gl, gl.FRAGMENT_SHADER, fragSrc) |
| 29 | if (!vert || !frag) return null |
| 30 | |
| 31 | const program = gl.createProgram() |
| 32 | gl.attachShader(program, vert) |
| 33 | gl.attachShader(program, frag) |
| 34 | gl.linkProgram(program) |
| 35 | |
| 36 | if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { |
| 37 | gl.deleteProgram(program) |
| 38 | return null |
| 39 | } |
| 40 | |
| 41 | // Clean up shaders after linking |
| 42 | gl.deleteShader(vert) |
| 43 | gl.deleteShader(frag) |
| 44 | |
| 45 | return program |
| 46 | } |
| 47 | |
| 48 | export function getUniformLocations(gl, program, names) { |
| 49 | const locations = {} |
no test coverage detected
searching dependent graphs…