sawine@24
|
1 |
function Cube(size, context)
|
sawine@24
|
2 |
{
|
sawine@24
|
3 |
var gl = context.gl;
|
sawine@24
|
4 |
this.size = size || 1;
|
sawine@24
|
5 |
this.rotation = {'x': 0.0, 'y': 0.0, 'z': 0.0};
|
sawine@24
|
6 |
|
sawine@24
|
7 |
this.positionBuffer = gl.createBuffer();
|
sawine@24
|
8 |
gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer);
|
sawine@24
|
9 |
var vertices = [
|
sawine@24
|
10 |
// Front face
|
sawine@24
|
11 |
-1.0, -1.0, 1.0,
|
sawine@24
|
12 |
1.0, -1.0, 1.0,
|
sawine@24
|
13 |
1.0, 1.0, 1.0,
|
sawine@24
|
14 |
-1.0, 1.0, 1.0,
|
sawine@24
|
15 |
|
sawine@24
|
16 |
// Back face
|
sawine@24
|
17 |
-1.0, -1.0, -1.0,
|
sawine@24
|
18 |
-1.0, 1.0, -1.0,
|
sawine@24
|
19 |
1.0, 1.0, -1.0,
|
sawine@24
|
20 |
1.0, -1.0, -1.0,
|
sawine@24
|
21 |
|
sawine@24
|
22 |
// Top face
|
sawine@24
|
23 |
-1.0, 1.0, -1.0,
|
sawine@24
|
24 |
-1.0, 1.0, 1.0,
|
sawine@24
|
25 |
1.0, 1.0, 1.0,
|
sawine@24
|
26 |
1.0, 1.0, -1.0,
|
sawine@24
|
27 |
|
sawine@24
|
28 |
// Bottom face
|
sawine@24
|
29 |
-1.0, -1.0, -1.0,
|
sawine@24
|
30 |
1.0, -1.0, -1.0,
|
sawine@24
|
31 |
1.0, -1.0, 1.0,
|
sawine@24
|
32 |
-1.0, -1.0, 1.0,
|
sawine@24
|
33 |
|
sawine@24
|
34 |
// Right face
|
sawine@24
|
35 |
1.0, -1.0, -1.0,
|
sawine@24
|
36 |
1.0, 1.0, -1.0,
|
sawine@24
|
37 |
1.0, 1.0, 1.0,
|
sawine@24
|
38 |
1.0, -1.0, 1.0,
|
sawine@24
|
39 |
|
sawine@24
|
40 |
// Left face
|
sawine@24
|
41 |
-1.0, -1.0, -1.0,
|
sawine@24
|
42 |
-1.0, -1.0, 1.0,
|
sawine@24
|
43 |
-1.0, 1.0, 1.0,
|
sawine@24
|
44 |
-1.0, 1.0, -1.0];
|
sawine@24
|
45 |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
|
sawine@24
|
46 |
this.positionBuffer.itemSize = 3;
|
sawine@24
|
47 |
this.positionBuffer.numItems = 24;
|
sawine@24
|
48 |
|
sawine@25
|
49 |
this.normalBuffer = gl.createBuffer();
|
sawine@25
|
50 |
gl.bindBuffer(gl.ARRAY_BUFFER, this.normalBuffer);
|
sawine@25
|
51 |
var normals = [// font face
|
sawine@25
|
52 |
0.0, 0.0, 1.0,
|
sawine@25
|
53 |
0.0, 0.0, 1.0,
|
sawine@25
|
54 |
0.0, 0.0, 1.0,
|
sawine@25
|
55 |
0.0, 0.0, 1.0,
|
sawine@25
|
56 |
// back face
|
sawine@25
|
57 |
0.0, 0.0, -1.0,
|
sawine@25
|
58 |
0.0, 0.0, -1.0,
|
sawine@25
|
59 |
0.0, 0.0, -1.0,
|
sawine@25
|
60 |
0.0, 0.0, -1.0,
|
sawine@25
|
61 |
// top face
|
sawine@25
|
62 |
0.0, 1.0, 0.0,
|
sawine@25
|
63 |
0.0, 1.0, 0.0,
|
sawine@25
|
64 |
0.0, 1.0, 0.0,
|
sawine@25
|
65 |
0.0, 1.0, 0.0,
|
sawine@25
|
66 |
// bottom face
|
sawine@25
|
67 |
0.0, -1.0, 0.0,
|
sawine@25
|
68 |
0.0, -1.0, 0.0,
|
sawine@25
|
69 |
0.0, -1.0, 0.0,
|
sawine@25
|
70 |
0.0, -1.0, 0.0,
|
sawine@25
|
71 |
// right face
|
sawine@25
|
72 |
1.0, 0.0, 0.0,
|
sawine@25
|
73 |
1.0, 0.0, 0.0,
|
sawine@25
|
74 |
1.0, 0.0, 0.0,
|
sawine@25
|
75 |
1.0, 0.0, 0.0,
|
sawine@25
|
76 |
// left face
|
sawine@25
|
77 |
-1.0, 0.0, 0.0,
|
sawine@25
|
78 |
-1.0, 0.0, 0.0,
|
sawine@25
|
79 |
-1.0, 0.0, 0.0,
|
sawine@25
|
80 |
-1.0, 0.0, 0.0];
|
sawine@25
|
81 |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(normals), gl.STATIC_DRAW);
|
sawine@25
|
82 |
this.normalBuffer.itemSize = 3;
|
sawine@25
|
83 |
this.normalBuffer.numItems = 24;
|
sawine@25
|
84 |
|
sawine@24
|
85 |
this.colourBuffer = gl.createBuffer();
|
sawine@24
|
86 |
gl.bindBuffer(gl.ARRAY_BUFFER, this.colourBuffer);
|
sawine@24
|
87 |
var alpha = 1.0;
|
sawine@25
|
88 |
var uni = [1.0, 1.0, 1.0, alpha];
|
sawine@25
|
89 |
var colours = [[0.0, 0.0, 0.0, alpha],
|
sawine@25
|
90 |
[0.0, 0.0, 0.0, alpha],
|
sawine@25
|
91 |
[0.0, 0.0, 0.0, alpha],
|
sawine@25
|
92 |
[0.0, 0.0, 0.0, alpha],
|
sawine@25
|
93 |
[0.0, 0.0, 0.0, alpha],
|
sawine@25
|
94 |
[0.0, 0.0, 0.0, alpha]];
|
sawine@24
|
95 |
var unpackedColours = [];
|
sawine@24
|
96 |
for (var i in colours)
|
sawine@24
|
97 |
{
|
sawine@25
|
98 |
var colour = uni;//colours[i];
|
sawine@24
|
99 |
for (var j = 0; j < 4; j++)
|
sawine@24
|
100 |
{
|
sawine@24
|
101 |
unpackedColours = unpackedColours.concat(colour);
|
sawine@24
|
102 |
}
|
sawine@24
|
103 |
//colours = colours.concat([0.5, 0.5, 1.0, 1.0]);
|
sawine@24
|
104 |
}
|
sawine@24
|
105 |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(unpackedColours), gl.STATIC_DRAW);
|
sawine@24
|
106 |
this.colourBuffer.itemSize = 4;
|
sawine@24
|
107 |
this.colourBuffer.numItems = 24;
|
sawine@24
|
108 |
|
sawine@24
|
109 |
this.indexBuffer = gl.createBuffer();
|
sawine@24
|
110 |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
|
sawine@24
|
111 |
var indices = [0, 1, 2, 0, 2, 3,
|
sawine@24
|
112 |
4, 5, 6, 4, 6, 7,
|
sawine@24
|
113 |
8, 9, 10, 8, 10, 11,
|
sawine@24
|
114 |
12, 13, 14, 12, 14, 15,
|
sawine@24
|
115 |
16, 17, 18, 16, 18, 19,
|
sawine@24
|
116 |
20, 21, 22, 20, 22, 23];
|
sawine@24
|
117 |
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW);
|
sawine@24
|
118 |
this.indexBuffer.itemSize = 1;
|
sawine@24
|
119 |
this.indexBuffer.numItems = 36;
|
sawine@24
|
120 |
} |