у меня есть какая-то проблема может быть, синтаксис может быть, логика не знает, но мои шейдеры не компиляции, когда она проходит через консоль, может быть кто-то знает, Что происходит, я последовал за учебник на Youtube: WebGl Tutorialшейдеров не компиляции
var vertexShaderText =
[
'precision mediump float;',
'',
'attribute vec2 vertPosition;',
'',
'void main()',
'{',
'gl_position = vec4(vertPosition,0.0,1.0);',
'}'
].join('\n');
var fragmentShaderText =
[
'precision mediump float;',
'',
'void main()',
'{',
'gl_FragColor = vec4(1.0,0.0,0.0,1.0);',
'}'
].join('\n');
var initDemo = function()
{
console.log("this is working");
var canvas = document.getElementById("myCanvas");
var gl = canvas.getContext("webgl");
if(!gl)
{
console.log("your browser doesnt support webgl, trying expermiental");
gl = canvas.getContext("experimental-webgl");
}
if(!gl)
{
alert("your bwoser doesnt support webgl");
}
gl.clearColor(0,1,0,1);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// create shadders
var vertexShader = gl.createShader(gl.VERTEX_SHADER);
var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(vertexShader,vertexShaderText);
gl.shaderSource(fragmentShader,fragmentShaderText);
console.log(fragmentShader);
if(!gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS))
{
console.error("Error compiling",gl.getShaderInfoLog(vertexShader));
}
gl.compileShader(vertexShader);
gl.compileShader(fragmentShader);
var program = gl.createProgram();
gl.attachShader(program,vertexShader);
gl.attachShader(program,fragmentShader);
gl.linkProgram(program);
if(!gl.getProgramParameter(program,gl.LINK_STATUS))
{
console.error("Error linking program",gl.getProgramInfoLog(program));
return;
}
gl.validateProgram(program);
if(!gl.getProgramParameter(program,gl.LINK_STATUS))
{
console.error("Error linking program",gl.getProgramInfoLog(program));
return;
}
var triangleVertices =
[
0.0,0.5,
0.5,0.5,
0.5,-0.5
]
var triangleVertexBufferObject = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexBufferObject);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(triangleVertices),gl.STATIC_DRAW);
var positionAtribLocation = gl.getAttribLocation(program,'vertPosition');
gl.vertexAttribPointer(
positionAtribLocation,
2,
gl.FLOAT,
gl.FALSE,
2 * Float32Array.BYTES_PER_ELEMENT,
0
);
gl.enableVertexAttribArray(positionAtribLocation);
gl.useProgram(program);
gl.drawArrays(gl.TRIANGLES,0,3);
}
Запрос 'gl.getShaderInfoLog (...)' и вы получите ошибку компиляции. – BDL
как я могу это сделать? извините, но im kinda new: S –
[возможно, вы захотите посмотреть на это] (http://webglfundamentals.org/webgl/lessons/webgl-boilerplate.html) – gman