зеркало из https://github.com/mozilla/gecko-dev.git
85 строки
2.4 KiB
HTML
85 строки
2.4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv='content-type' content='text/html; charset=utf-8'/>
|
|
|
|
<title>Test contents of uninitialized buffers</title>
|
|
|
|
<script src='/tests/SimpleTest/SimpleTest.js'></script>
|
|
<link rel='stylesheet' href='/tests/SimpleTest/test.css'>
|
|
<script src='webgl-util.js'></script>
|
|
</head>
|
|
|
|
<body>
|
|
<script>
|
|
'use strict';
|
|
|
|
function TestFB(gl) {
|
|
var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
|
|
ok(status == gl.FRAMEBUFFER_COMPLETE, 'FB should be complete.');
|
|
|
|
var pixel = new Uint8Array(4);
|
|
gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel);
|
|
|
|
ok(!pixel[0], 'R channel should be 0, was ' + pixel[0] + '.');
|
|
ok(!pixel[1], 'G channel should be 0, was ' + pixel[1] + '.');
|
|
ok(!pixel[2], 'B channel should be 0, was ' + pixel[2] + '.');
|
|
ok(!pixel[3], 'A channel should be 0, was ' + pixel[3] + '.');
|
|
}
|
|
|
|
function Test(contextAttribs) {
|
|
ok(true, '===============================');
|
|
ok(true, 'Testing ' + JSON.stringify(contextAttribs));
|
|
|
|
var c = document.createElement('canvas');
|
|
var gl = c.getContext('webgl', contextAttribs);
|
|
if (!gl) {
|
|
todo(false, 'WebGL is unavailable.');
|
|
return;
|
|
}
|
|
|
|
var rb = gl.createRenderbuffer();
|
|
gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
|
|
|
|
var tex = gl.createTexture();
|
|
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
|
|
var err = gl.getError();
|
|
ok(!err, 'Error should be 0x0, was 0x' + err.toString(16));
|
|
if (err)
|
|
return;
|
|
|
|
var fb = gl.createFramebuffer();
|
|
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
|
|
|
|
ok(true, 'Backed with RB');
|
|
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, rb);
|
|
gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 1, 1);
|
|
TestFB(gl);
|
|
|
|
ok(true, 'Backed with texture');
|
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex, 0);
|
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
TestFB(gl);
|
|
|
|
err = gl.getError();
|
|
ok(!err, 'Error should be 0x0, was 0x' + err.toString(16));
|
|
}
|
|
|
|
// Give ourselves a scope to return early from:
|
|
(function() {
|
|
// We test multiple configurations because we've had bugs regarding faking RGBX on
|
|
// ANGLE: With alpha:false, uninitialized buffers were being filled with (0,0,0,1)
|
|
// instead of (0,0,0,0).
|
|
Test({alpha: false, antialias: false});
|
|
Test({alpha: true, antialias: false});
|
|
Test({alpha: false, antialias: true});
|
|
Test({alpha: true, antialias: true});
|
|
|
|
ok(true, 'Test complete.');
|
|
})();
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|