gl.attachShader не является объектом - PullRequest
1 голос
/ 27 сентября 2019

Я добавил webGL2 в качестве контекста для холста, но у меня есть ошибка:

Uncaught TypeError: Failed to execute 'attachShader' on 'WebGL2RenderingContext': parameter 2 is not of type 'WebGLShader'.
at CreateProgram (index.html:88)
at index.html:107

Я также:

  • Попробовал использовать "webgl" вместо "webgl2"на "canvas.getContext ..."

Я следую учебному пособию здесь: https://webgl2fundamentals.org/webgl/lessons/webgl-fundamentals.html

Полный код:

https://drive.google.com/file/d/1Nl10-ZEP8JujGXMwHHVGaDF6KdhvZcfg/view?usp=sharing

Проблема найдена здесь:

function CreateProgram(gl,vertexShader,fragmentShader) {

var program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);

var success = gl.getProgramParameter(program,gl.LINK_STATUS);

if(success) {

return program;

}

//Else delete program
console.log(gl.getProgramInfoLog(program));
gl.deleteProgram(program);

}

1 Ответ

2 голосов
/ 27 сентября 2019

ваш фрагмент GLSL имеет синтаксическую ошибку, которая вызывает ошибку типа.

обратите внимание на строку 47

, вы должны использовать outColour = vec4(1,0,0.5,1); вместо outColour = vec4{1,0,0.5,1};

...