he logrado aislar el problema en este código:de WebGL vuelve extrañamente -1
var gl;
_main_web = function() {
gl = document.getElementById("canvas").getContext("experimental-webgl");
gl = WebGLDebugUtils.makeDebugContext(gl,
function (err, funcName, args) {
throw(WebGLDebugUtils.glEnumToString(err) + " was caused by call to " + funcName);
}
);
vert_shader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vert_shader,"attribute vec4 vertex;attribute vec2 uv; void main(void) {gl_Position = vertex;}\n");
gl.compileShader(vert_shader);
if(!gl.getShaderParameter(vert_shader,gl.COMPILE_STATUS)) {
throw 0;
}
frag_shader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(frag_shader,"void main(void) { gl_FragColor = vec4(1.0,1.0,1.0,1.0); } \n");
gl.compileShader(frag_shader);
if(!gl.getShaderParameter(frag_shader,gl.COMPILE_STATUS)) {
throw 1;
}
program = gl.createProgram();
gl.attachShader(program,vert_shader);
gl.attachShader(program,frag_shader);
gl.linkProgram(program);
if(!gl.getProgramParameter(program,gl.LINK_STATUS)) {
throw 2;
}
vertexLocation = gl.getAttribLocation(program,"vertex");
textureLocation = gl.getAttribLocation(program,"uv");
}
vertexLocation está bien, es 0. Pero textureLocation es -1, lo que me estoy perdiendo?
Este punto aquí: "Incluso si se lo asigna a una variación en este sombreador pero nunca lo use en el sombreador de fragmentos, aún puede ser eliminado" es lo que me ayudó al final. Sabía que los atributos no utilizados serían eliminados, pero no sabía que podría trasladarse entre el vértice y los sombreadores de fragmentos. ¡Gracias! – aclave1