-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathgetparameter-binding-test.html
More file actions
68 lines (63 loc) · 2.72 KB
/
getparameter-binding-test.html
File metadata and controls
68 lines (63 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>WebGL getParameter Binding Test</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
.pass { color: green; }
.fail { color: red; }
pre { background: #f5f5f5; padding: 10px; border-radius: 4px; }
</style>
</head>
<body>
<h1>WebGL getParameter Binding Test</h1>
<p>This test verifies that context.getParameter() returns null (not undefined) for binding parameters.</p>
<div id="results"></div>
<script>
const results = document.getElementById('results');
function log(message, isPass) {
const div = document.createElement('div');
div.className = isPass ? 'pass' : 'fail';
div.textContent = (isPass ? '✓ ' : '✗ ') + message;
results.appendChild(div);
}
function testParameter(gl, paramName, paramValue) {
const result = gl.getParameter(paramValue);
const isNull = result === null;
const isUndefined = result === undefined;
if (isNull) {
log(`${paramName}: correctly returns null`, true);
return true;
} else if (isUndefined) {
log(`${paramName}: INCORRECTLY returns undefined (should be null)`, false);
return false;
} else {
log(`${paramName}: returns ${result} (expected null or object)`, true);
return true;
}
}
// Create WebGL2 context
const canvas2 = document.createElement('canvas');
const gl2 = navigator.gl || canvas2.getContext('webgl2');
if (gl2) {
results.innerHTML += '<h2>WebGL 2.0 Binding Parameters</h2>';
testParameter(gl2, 'COPY_READ_BUFFER_BINDING', gl2.COPY_READ_BUFFER_BINDING);
testParameter(gl2, 'COPY_WRITE_BUFFER_BINDING', gl2.COPY_WRITE_BUFFER_BINDING);
testParameter(gl2, 'DRAW_FRAMEBUFFER_BINDING', gl2.DRAW_FRAMEBUFFER_BINDING);
testParameter(gl2, 'READ_FRAMEBUFFER_BINDING', gl2.READ_FRAMEBUFFER_BINDING);
testParameter(gl2, 'PIXEL_PACK_BUFFER_BINDING', gl2.PIXEL_PACK_BUFFER_BINDING);
testParameter(gl2, 'PIXEL_UNPACK_BUFFER_BINDING', gl2.PIXEL_UNPACK_BUFFER_BINDING);
testParameter(gl2, 'UNIFORM_BUFFER_BINDING', gl2.UNIFORM_BUFFER_BINDING);
testParameter(gl2, 'VERTEX_ARRAY_BINDING', gl2.VERTEX_ARRAY_BINDING);
testParameter(gl2, 'SAMPLER_BINDING', gl2.SAMPLER_BINDING);
testParameter(gl2, 'TRANSFORM_FEEDBACK_BINDING', gl2.TRANSFORM_FEEDBACK_BINDING);
testParameter(gl2, 'TRANSFORM_FEEDBACK_BUFFER_BINDING', gl2.TRANSFORM_FEEDBACK_BUFFER_BINDING);
testParameter(gl2, 'TEXTURE_BINDING_2D_ARRAY', gl2.TEXTURE_BINDING_2D_ARRAY);
testParameter(gl2, 'TEXTURE_BINDING_3D', gl2.TEXTURE_BINDING_3D);
} else {
log('WebGL 2.0 not supported', false);
}
</script>
</body>
</html>