зеркало из https://github.com/mozilla/gecko-dev.git
86 строки
2.1 KiB
HTML
86 строки
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<title>WebGL test: Drawing without index validation</title>
|
|
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
|
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
|
|
|
<script id='vertSource' type='none'>
|
|
void main(void) {
|
|
gl_PointSize = 1.0;
|
|
gl_Position = vec4(0, 0, 0, 1);
|
|
}
|
|
</script>
|
|
|
|
<script id='fragSource' type='none'>
|
|
precision mediump float;
|
|
|
|
void main(void) {
|
|
gl_FragColor = vec4(0, 1, 0, 1);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
function test() {
|
|
const c = document.createElement('canvas');
|
|
c.width = c.height = 1;
|
|
const gl = c.getContext('webgl');
|
|
if (!gl) {
|
|
todo(false, 'WebGL is unavailable.');
|
|
return;
|
|
}
|
|
document.body.appendChild(c);
|
|
|
|
const vs = gl.createShader(gl.VERTEX_SHADER);
|
|
gl.shaderSource(vs, vertSource.innerHTML.trim());
|
|
gl.compileShader(vs);
|
|
const fs = gl.createShader(gl.FRAGMENT_SHADER);
|
|
gl.shaderSource(fs, fragSource.innerHTML.trim());
|
|
gl.compileShader(fs);
|
|
const prog = gl.createProgram();
|
|
gl.attachShader(prog, vs);
|
|
gl.attachShader(prog, fs);
|
|
gl.linkProgram(prog);
|
|
gl.useProgram(prog);
|
|
|
|
gl.clearColor(1,0,0,1);
|
|
const pixel = new Uint32Array(1);
|
|
const pixelData = new Uint8Array(pixel.buffer);
|
|
|
|
function expectPixel(expected, info) {
|
|
gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);
|
|
ok(pixel[0] == expected,
|
|
'[' + info + '] Expected 0x' + expected.toString(16) + ', was 0x' + pixel[0].toString(16));
|
|
}
|
|
|
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
expectPixel(0xFF0000FF, 'Clear');
|
|
|
|
gl.drawArrays(gl.POINTS, 0, 1);
|
|
expectPixel(0xFF00FF00, 'DrawArrays');
|
|
|
|
const indexBuffer = gl.createBuffer();
|
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
|
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0]), gl.STATIC_DRAW);
|
|
|
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 0);
|
|
expectPixel(0xFF00FF00, 'DrawElements');
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
const prefArrArr = [
|
|
['webgl.force-index-validation', -1]
|
|
];
|
|
const prefEnv = {'set': prefArrArr};
|
|
SpecialPowers.pushPrefEnv(prefEnv, test);
|
|
|
|
</script>
|
|
</body>
|
|
</html> |