| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../resources/js-test.js" type="text/javascript"></script> |
| <script src="resources/webgl-test.js" type="text/javascript"></script> |
| <script src="resources/webgl-test-utils.js"> </script> |
| |
| </head> |
| <body> |
| <canvas id="webgl-canvas" width="100px" height="100px"></canvas> |
| <script> |
| var wtu = WebGLTestUtils; |
| |
| function runShaderTest(gl, vShaderSource, fshaderSource, errorShouldBeText) |
| { |
| var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); |
| var program = gl.createProgram(); |
| var vertexShader = gl.createShader(gl.VERTEX_SHADER); |
| gl.shaderSource(vertexShader, vShaderSource); |
| gl.compileShader(vertexShader); |
| gl.shaderSource(fragmentShader, fshaderSource); |
| gl.compileShader(fragmentShader); |
| gl.attachShader(program, vertexShader); |
| gl.attachShader(program, fragmentShader); |
| gl.linkProgram(program); |
| gl.useProgram(program); |
| gl.drawArrays(gl.TRIANGLES, 0, 3); |
| wtu.glErrorShouldBe(gl,0,errorShouldBeText); |
| gl.deleteProgram(program) |
| gl.deleteShader(vertexShader); |
| gl.deleteShader(fragmentShader); |
| } |
| function runTest() |
| { |
| description("Tests compiling programs that use the 'sequence' operator.."); |
| var canvas = document.getElementById('webgl-canvas'); |
| var gl = canvas.getContext("webgl"); |
| { |
| var vShaderSource = "void f(vec2 a) {} void main() { f(vec2(0.)), gl_Position = vec4(0.,0.,0.,1.); }"; |
| var fshaderSource = "void main() { gl_FragColor = vec4(0.); }"; |
| runShaderTest(gl, vShaderSource, fshaderSource, "no error for using comma operator with void function") |
| } |
| |
| { |
| var vShaderSource = "vec2 f(vec2 a) { return a; } void main() { f(vec2(0.)), gl_Position = vec4(0.,0.,0.,1.); }"; |
| var fshaderSource = "void main() { gl_FragColor = vec4(0.); }"; |
| runShaderTest(gl, vShaderSource, fshaderSource, "no error for using comma operator with non-void function") |
| } |
| |
| { |
| var vShaderSource = "void main() { vec2(0.), gl_Position = vec4(0.,0.,0.,1.); }"; |
| var fshaderSource = "void main() { gl_FragColor = vec4(0.); }"; |
| runShaderTest(gl, vShaderSource, fshaderSource, "no error for using comma operator with standard type") |
| } |
| } |
| runTest(); |
| |
| </script> |
| </body> |
| </html> |