標籤:ntb err getattr div canvas 解決 i+1 ++ height
function main(){ var canvas = document.getElementById("webgl"); var gl = getWebGLContext(canvas); var VSHADER_SOURCE = function(){ /* attribute vec4 a_Position; attribute float a_PointSize; void main(){ gl_Position = a_Position; gl_PointSize = a_PointSize; } */ }.toString().match(/\/\*([^]*)\*\//)[1]; var FSHADER_SOURCE = function(){ /* precision lowp float; uniform vec4 u_FragColor; void main(){ gl_FragColor = u_FragColor; } */ }.toString().match(/\/\*([^]*)\*\//)[1]; initShaders(gl,VSHADER_SOURCE,FSHADER_SOURCE); var a_Position = gl.getAttribLocation(gl.program,"a_Position"); var a_PointSize = gl.getAttribLocation(gl.program,"a_PointSize"); var u_FragColor = gl.getUniformLocation(gl.program,"u_FragColor"); gl.clearColor(0.0,0.0,0.0,0.8); gl.clear(gl.COLOR_BUFFER_BIT); gl.uniform4f(u_FragColor, 0.1,1.0,1.0,1.0); for (var i=0;i<10;i++){ gl.vertexAttrib3f(a_Position,(i+1)*0.1,(i+1)*0.1,0.0); gl.vertexAttrib1f(a_PointSize, 10.0); gl.drawArrays(gl.POINTS, 0, 1); }}
如果:
Failed to compile shader: ERROR: 0:3: ‘‘ : No precision specified for (float)
解決辦法:
在片元著色器裡面加上浮點數精度聲明(事實上,片元著色器支援所有3種精度,並不是精度不支援,只是需要聲明而已)
片元著色器精度聲明不可或缺