scripts/cube.js
author Eugen Sawin <sawine@me73.com>
Fri, 29 Apr 2011 17:10:15 +0200
changeset 35 7769f6e1e2c5
parent 28 9df7034275e8
child 36 a828c4cde5b3
permissions -rw-r--r--
Added cube vbos and ids.
sawine@28
     1
function Node(position, rotation, geometry)
sawine@28
     2
{
sawine@28
     3
    this.pos = position;
sawine@28
     4
    this.rot = rotation;
sawine@28
     5
    this.geometry = geometry;
sawine@28
     6
    this.children = [];
sawine@28
     7
}
sawine@28
     8
Node.prototype.update = function(time)
sawine@28
     9
{
sawine@28
    10
    // this.right = [1, 0, 0];
sawine@28
    11
    // this.up = [0, 1, 0];
sawine@28
    12
    // this.target = [0, 0, -1];
sawine@28
    13
    // var x = vec3.dot([1, 0, 0], this.pos);
sawine@28
    14
    // var y = vec3.dot([0, 1, 0], this.pos);
sawine@28
    15
    // var z = vec3.dot([0, 0, -1], this.pos);
sawine@28
    16
    // this.matrix = mat4.create([this.right[0], this.up[0], -this.target[0], 0,
sawine@28
    17
    //  			       this.right[1], this.up[1], -this.target[1], 0,
sawine@28
    18
    //  			       this.right[2], this.up[2], -this.target[2], 0,
sawine@28
    19
    //  			       -x, -y, z, 1]); 
sawine@28
    20
    for (var id in this.children) this.children[id].update(time);
sawine@28
    21
}
sawine@28
    22
sawine@35
    23
function CubeVbo(size, context)
sawine@24
    24
{
sawine@24
    25
    var gl = context.gl;
sawine@28
    26
    this.size = size || 1;    
sawine@24
    27
    this.positionBuffer = gl.createBuffer();
sawine@24
    28
    gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer);
sawine@24
    29
    var vertices = [
sawine@24
    30
	     // Front face
sawine@24
    31
            -1.0, -1.0,  1.0,
sawine@24
    32
             1.0, -1.0,  1.0,
sawine@24
    33
             1.0,  1.0,  1.0,
sawine@24
    34
            -1.0,  1.0,  1.0,
sawine@24
    35
 
sawine@24
    36
            // Back face
sawine@24
    37
            -1.0, -1.0, -1.0,
sawine@24
    38
            -1.0,  1.0, -1.0,
sawine@24
    39
             1.0,  1.0, -1.0,
sawine@24
    40
             1.0, -1.0, -1.0,
sawine@24
    41
 
sawine@24
    42
            // Top face
sawine@24
    43
            -1.0,  1.0, -1.0,
sawine@24
    44
            -1.0,  1.0,  1.0,
sawine@24
    45
             1.0,  1.0,  1.0,
sawine@24
    46
             1.0,  1.0, -1.0,
sawine@24
    47
 
sawine@24
    48
            // Bottom face
sawine@24
    49
            -1.0, -1.0, -1.0,
sawine@24
    50
             1.0, -1.0, -1.0,
sawine@24
    51
             1.0, -1.0,  1.0,
sawine@24
    52
            -1.0, -1.0,  1.0,
sawine@24
    53
 
sawine@24
    54
            // Right face
sawine@24
    55
             1.0, -1.0, -1.0,
sawine@24
    56
             1.0,  1.0, -1.0,
sawine@24
    57
             1.0,  1.0,  1.0,
sawine@24
    58
             1.0, -1.0,  1.0,
sawine@24
    59
 
sawine@24
    60
            // Left face
sawine@24
    61
            -1.0, -1.0, -1.0,
sawine@24
    62
            -1.0, -1.0,  1.0,
sawine@24
    63
            -1.0,  1.0,  1.0,
sawine@24
    64
            -1.0,  1.0, -1.0];
sawine@24
    65
    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
sawine@24
    66
    this.positionBuffer.itemSize = 3;
sawine@24
    67
    this.positionBuffer.numItems = 24;
sawine@24
    68
sawine@25
    69
    this.normalBuffer = gl.createBuffer();
sawine@25
    70
    gl.bindBuffer(gl.ARRAY_BUFFER, this.normalBuffer);
sawine@25
    71
    var normals = [// font face
sawine@25
    72
		   0.0, 0.0, 1.0,
sawine@25
    73
		   0.0, 0.0, 1.0,
sawine@25
    74
		   0.0, 0.0, 1.0,
sawine@25
    75
		   0.0, 0.0, 1.0,
sawine@25
    76
		   // back face
sawine@25
    77
		   0.0, 0.0, -1.0,
sawine@25
    78
		   0.0, 0.0, -1.0,
sawine@25
    79
		   0.0, 0.0, -1.0,
sawine@25
    80
		   0.0, 0.0, -1.0,
sawine@25
    81
		   // top face
sawine@25
    82
		   0.0, 1.0, 0.0,
sawine@25
    83
		   0.0, 1.0, 0.0,
sawine@25
    84
		   0.0, 1.0, 0.0, 
sawine@25
    85
		   0.0, 1.0, 0.0,
sawine@25
    86
		   // bottom face
sawine@25
    87
		   0.0, -1.0, 0.0,
sawine@25
    88
		   0.0, -1.0, 0.0,
sawine@25
    89
		   0.0, -1.0, 0.0,
sawine@25
    90
		   0.0, -1.0, 0.0,
sawine@25
    91
		   // right face
sawine@25
    92
		   1.0, 0.0, 0.0,
sawine@25
    93
		   1.0, 0.0, 0.0,
sawine@25
    94
		   1.0, 0.0, 0.0,
sawine@25
    95
		   1.0, 0.0, 0.0,
sawine@25
    96
		   // left face
sawine@25
    97
		   -1.0, 0.0, 0.0,
sawine@25
    98
		   -1.0, 0.0, 0.0,
sawine@25
    99
		   -1.0, 0.0, 0.0,
sawine@25
   100
		   -1.0, 0.0, 0.0];
sawine@25
   101
    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(normals), gl.STATIC_DRAW);
sawine@25
   102
    this.normalBuffer.itemSize = 3;
sawine@25
   103
    this.normalBuffer.numItems = 24;
sawine@25
   104
sawine@24
   105
    this.colourBuffer = gl.createBuffer();
sawine@24
   106
    gl.bindBuffer(gl.ARRAY_BUFFER, this.colourBuffer);
sawine@24
   107
    var alpha = 1.0;
sawine@25
   108
    var uni = [1.0, 1.0, 1.0, alpha];
sawine@25
   109
    var colours = [[0.0, 0.0, 0.0, alpha],
sawine@25
   110
		   [0.0, 0.0, 0.0, alpha],
sawine@25
   111
		   [0.0, 0.0, 0.0, alpha],
sawine@25
   112
		   [0.0, 0.0, 0.0, alpha],
sawine@25
   113
		   [0.0, 0.0, 0.0, alpha],
sawine@25
   114
		   [0.0, 0.0, 0.0, alpha]];
sawine@24
   115
    var unpackedColours = [];
sawine@24
   116
    for (var i in colours)
sawine@24
   117
    {
sawine@25
   118
	var colour = uni;//colours[i];
sawine@24
   119
	for (var j = 0; j < 4; j++)
sawine@24
   120
	{
sawine@24
   121
	    unpackedColours = unpackedColours.concat(colour);
sawine@24
   122
	}
sawine@24
   123
	//colours = colours.concat([0.5, 0.5, 1.0, 1.0]);
sawine@24
   124
    }
sawine@24
   125
    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(unpackedColours), gl.STATIC_DRAW);
sawine@24
   126
    this.colourBuffer.itemSize = 4;
sawine@24
   127
    this.colourBuffer.numItems = 24;
sawine@24
   128
sawine@24
   129
    this.indexBuffer = gl.createBuffer();
sawine@24
   130
    gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
sawine@24
   131
    var indices = [0, 1, 2, 0, 2, 3,
sawine@24
   132
		   4, 5, 6, 4, 6, 7,
sawine@24
   133
		   8, 9, 10, 8, 10, 11,
sawine@24
   134
		   12, 13, 14, 12, 14, 15,
sawine@24
   135
		   16, 17, 18, 16, 18, 19,
sawine@24
   136
		   20, 21, 22, 20, 22, 23];
sawine@24
   137
    gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW);
sawine@24
   138
    this.indexBuffer.itemSize = 1;
sawine@24
   139
    this.indexBuffer.numItems = 36;
sawine@35
   140
}
sawine@35
   141
sawine@35
   142
var id = 0;
sawine@35
   143
function Cube(vbo)
sawine@35
   144
{
sawine@35
   145
    this.id = id++;
sawine@35
   146
    this.vbo = vbo;
sawine@24
   147
}