scripts/cube.js
author Eugen Sawin <sawine@me73.com>
Wed, 27 Apr 2011 00:45:37 +0200
changeset 27 130cff40c734
parent 24 8c2ee41d3727
child 28 9df7034275e8
permissions -rw-r--r--
Object camera.
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
}