6 Copyright (c) 2019 The Khronos Group Inc.
7 Use of this source code is governed by an MIT-style license that can be
8 found in the LICENSE.txt file.
10 <link rel=
"stylesheet" type=
"text/css" href=
"../unit.css" />
11 <script type=
"application/javascript" src=
"../unit.js"></script>
12 <script type=
"application/javascript" src=
"../util.js"></script>
13 <script type=
"application/javascript">
15 Tests.startUnit = function () {
16 var canvas = document.getElementById('gl');
17 var gl = getGLContext(canvas);
18 var buf = gl.createBuffer();
19 var ebuf = gl.createBuffer();
20 gl.bindBuffer(gl.ARRAY_BUFFER, buf);
21 gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ebuf);
22 return [gl, buf, ebuf];
25 Tests.testBufferSubData = function(gl, buf, ebuf) {
26 var data = [
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0];
27 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW);
28 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Float32Array([
1,
2,
3,
4]));
29 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Float32Array([
1,
1,
1,
1]));
30 gl.bufferSubData(gl.ARRAY_BUFFER,
32, new Float32Array([
1,
1,
1,
1]));
31 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
4);
32 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.STATIC_DRAW);
33 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STREAM_DRAW);
34 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Float32Array([
1,
1,
1,
1]));
35 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Float32Array([
1,
2,
3,
4]));
36 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
4);
37 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.STREAM_DRAW);
38 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.DYNAMIC_DRAW);
39 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Float32Array([
1,
1,
1,
1]));
40 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Float32Array([
1,
2,
3,
4]));
41 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint32Array([
1,
1,
1,
1]));
42 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Int32Array([
1,
1,
1,
1]));
43 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Int16Array([
1,
1,
1,
1]));
44 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
45 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Int8Array([
1,
1,
1,
1]));
46 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint8Array([
1,
1,
1,
1]));
47 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
4);
48 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.DYNAMIC_DRAW);
50 gl.bufferData(gl.ARRAY_BUFFER,
12, gl.STATIC_DRAW);
51 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12);
52 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.STATIC_DRAW);
54 gl.bufferData(gl.ARRAY_BUFFER,
12*
4, gl.STATIC_DRAW);
55 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Float32Array([
1,
2,
3,
4]));
56 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Float32Array([
1,
1,
1,
1]));
57 gl.bufferSubData(gl.ARRAY_BUFFER,
32, new Float32Array([
1,
1,
1,
1]));
58 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
4);
59 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.STATIC_DRAW);
60 gl.bufferData(gl.ARRAY_BUFFER,
12*
4, gl.STREAM_DRAW);
61 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Float32Array([
1,
1,
1,
1]));
62 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Float32Array([
1,
2,
3,
4]));
63 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
4);
64 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.STREAM_DRAW);
65 gl.bufferData(gl.ARRAY_BUFFER,
12*
4, gl.DYNAMIC_DRAW);
66 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Float32Array([
1,
1,
1,
1]));
67 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Float32Array([
1,
2,
3,
4]));
68 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint32Array([
1,
1,
1,
1]));
69 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Int32Array([
1,
1,
1,
1]));
70 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Int16Array([
1,
1,
1,
1]));
71 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
72 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Int8Array([
1,
1,
1,
1]));
73 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint8Array([
1,
1,
1,
1]));
74 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
4);
75 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE), gl.DYNAMIC_DRAW);
77 gl.bufferData(gl.ARRAY_BUFFER, new Uint16Array(data), gl.STATIC_DRAW);
78 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
79 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Uint16Array([
1,
2,
3,
4]));
80 gl.bufferData(gl.ARRAY_BUFFER, new Uint16Array(data), gl.STREAM_DRAW);
81 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
82 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Uint16Array([
1,
2,
3,
4]));
83 gl.bufferData(gl.ARRAY_BUFFER, new Uint16Array(data), gl.DYNAMIC_DRAW);
84 gl.bufferSubData(gl.ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
85 gl.bufferSubData(gl.ARRAY_BUFFER,
0, new Uint16Array([
1,
2,
3,
4]));
86 assertEquals(gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
2);
87 throwError(gl,
"array bufferSubData");
89 Tests.testBufferSubDataElement = function(gl, buf, ebuf) {
90 var data = [
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0];
91 gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(data), gl.STATIC_DRAW);
92 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
93 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
0, new Uint16Array([
1,
2,
3,
4]));
94 gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(data), gl.STREAM_DRAW);
95 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
96 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
0, new Uint16Array([
1,
2,
3,
4]));
97 gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(data), gl.DYNAMIC_DRAW);
98 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
16, new Uint16Array([
1,
1,
1,
1]));
99 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
0, new Uint16Array([
1,
2,
3,
4]));
100 assertEquals(gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE),
12*
2);
101 gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint8Array(data), gl.DYNAMIC_DRAW);
102 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
4, new Uint8Array([
1,
1,
1,
1]));
103 gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER,
0, new Uint8Array([
1,
2,
3,
4]));
104 assertEquals(gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE),
12);
105 throwError(gl,
"element array bufferSubData");
108 Tests.endUnit = function(gl, buf, ebuf) {
109 gl.deleteBuffer(buf);
110 gl.deleteBuffer(ebuf);
114 <style>canvas{ position:absolute; }
</style>
116 <canvas id=
"gl" width=
"16" height=
"16"></canvas>