<canvas id="canvas" width="10" height="10"></canvas> | |
<div></div> | |
<script id='vertex-shader' type='x-shader/x-vertex'> | |
attribute vec3 position; | |
void main(void) { | |
gl_Position = vec4(position, 1.0); | |
} | |
</script> | |
<script id='fragment-shader' type='x-shader/x-fragment'> | |
precision mediump float; | |
void main(void) { | |
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); | |
} | |
</script> | |
<script> | |
function output(msg) { | |
document.querySelector("div").innerHTML += msg + "<br>"; | |
} | |
if (window.testRunner) | |
testRunner.dumpAsText(); | |
let canvas = document.getElementById("canvas"); | |
let gl = canvas.getContext("webgl"); | |
gl.getExtension("OES_element_index_uint"); | |
let vShader = gl.createShader(gl.VERTEX_SHADER); | |
gl.shaderSource(vShader, document.getElementById("vertex-shader").text); | |
gl.compileShader(vShader); | |
let fShader = gl.createShader(gl.FRAGMENT_SHADER); | |
gl.shaderSource(fShader, document.getElementById("fragment-shader").text); | |
gl.compileShader(fShader); | |
program = gl.createProgram(); | |
gl.attachShader(program, vShader); | |
gl.attachShader(program, fShader); | |
gl.linkProgram(program); | |
gl.useProgram(program); | |
let buffer = gl.createBuffer(); | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); | |
let data; | |
// Maximum uint. | |
data = new Uint8Array([255, 255, 255, 255]); | |
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, gl.DYNAMIC_DRAW); | |
gl.drawElements(gl.TRIANGLE_STRIP, 1, gl.UNSIGNED_INT,0); | |
if (gl.getError() == gl.INVALID_OPERATION) | |
output("PASS: MAX_UINT index was unable to be simulated"); | |
else | |
output("FAIL: MAX_UINT index did not fail validation"); | |
// Two large numbers, one of which is smaller than 0.25 * max uint. | |
data = new Uint32Array([380000000, 4294967295]); | |
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, gl.DYNAMIC_DRAW); | |
gl.drawElements(gl.TRIANGLE_STRIP, 1, gl.UNSIGNED_INT,0); | |
if (gl.getError() == gl.INVALID_OPERATION) | |
output("PASS: Huge index was unable to be simulated"); | |
else | |
output("FAIL: Huge index did not fail validation"); | |
</script> | |