33 lines
937 B
JavaScript
33 lines
937 B
JavaScript
/**
|
|
* Вспомогательные функции для работы с WebGL 2.0
|
|
*/
|
|
|
|
export function compileShader(gl, type, source) {
|
|
const shader = gl.createShader(type);
|
|
gl.shaderSource(shader, source);
|
|
gl.compileShader(shader);
|
|
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
console.error("Shader Compile Error:", gl.getShaderInfoLog(shader));
|
|
gl.deleteShader(shader);
|
|
return null;
|
|
}
|
|
return shader;
|
|
}
|
|
|
|
export function createProgram(gl, vsSource, fsSource) {
|
|
const vs = compileShader(gl, gl.VERTEX_SHADER, vsSource);
|
|
const fs = compileShader(gl, gl.FRAGMENT_SHADER, fsSource);
|
|
if (!vs || !fs) return null;
|
|
|
|
const prog = gl.createProgram();
|
|
gl.attachShader(prog, vs);
|
|
gl.attachShader(prog, fs);
|
|
gl.linkProgram(prog);
|
|
|
|
if (!gl.getProgramParameter(prog, gl.LINK_STATUS)) {
|
|
console.error("Program Link Error:", gl.getProgramInfoLog(prog));
|
|
return null;
|
|
}
|
|
return prog;
|
|
}
|