sawine@24: function Cube(size, context) sawine@24: { sawine@24: var gl = context.gl; sawine@24: this.size = size || 1; sawine@24: this.rotation = {'x': 0.0, 'y': 0.0, 'z': 0.0}; sawine@24: sawine@24: this.positionBuffer = gl.createBuffer(); sawine@24: gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); sawine@24: var vertices = [ sawine@24: // Front face sawine@24: -1.0, -1.0, 1.0, sawine@24: 1.0, -1.0, 1.0, sawine@24: 1.0, 1.0, 1.0, sawine@24: -1.0, 1.0, 1.0, sawine@24: sawine@24: // Back face sawine@24: -1.0, -1.0, -1.0, sawine@24: -1.0, 1.0, -1.0, sawine@24: 1.0, 1.0, -1.0, sawine@24: 1.0, -1.0, -1.0, sawine@24: sawine@24: // Top face sawine@24: -1.0, 1.0, -1.0, sawine@24: -1.0, 1.0, 1.0, sawine@24: 1.0, 1.0, 1.0, sawine@24: 1.0, 1.0, -1.0, sawine@24: sawine@24: // Bottom face sawine@24: -1.0, -1.0, -1.0, sawine@24: 1.0, -1.0, -1.0, sawine@24: 1.0, -1.0, 1.0, sawine@24: -1.0, -1.0, 1.0, sawine@24: sawine@24: // Right face sawine@24: 1.0, -1.0, -1.0, sawine@24: 1.0, 1.0, -1.0, sawine@24: 1.0, 1.0, 1.0, sawine@24: 1.0, -1.0, 1.0, sawine@24: sawine@24: // Left face sawine@24: -1.0, -1.0, -1.0, sawine@24: -1.0, -1.0, 1.0, sawine@24: -1.0, 1.0, 1.0, sawine@24: -1.0, 1.0, -1.0]; sawine@24: gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); sawine@24: this.positionBuffer.itemSize = 3; sawine@24: this.positionBuffer.numItems = 24; sawine@24: sawine@25: this.normalBuffer = gl.createBuffer(); sawine@25: gl.bindBuffer(gl.ARRAY_BUFFER, this.normalBuffer); sawine@25: var normals = [// font face sawine@25: 0.0, 0.0, 1.0, sawine@25: 0.0, 0.0, 1.0, sawine@25: 0.0, 0.0, 1.0, sawine@25: 0.0, 0.0, 1.0, sawine@25: // back face sawine@25: 0.0, 0.0, -1.0, sawine@25: 0.0, 0.0, -1.0, sawine@25: 0.0, 0.0, -1.0, sawine@25: 0.0, 0.0, -1.0, sawine@25: // top face sawine@25: 0.0, 1.0, 0.0, sawine@25: 0.0, 1.0, 0.0, sawine@25: 0.0, 1.0, 0.0, sawine@25: 0.0, 1.0, 0.0, sawine@25: // bottom face sawine@25: 0.0, -1.0, 0.0, sawine@25: 0.0, -1.0, 0.0, sawine@25: 0.0, -1.0, 0.0, sawine@25: 0.0, -1.0, 0.0, sawine@25: // right face sawine@25: 1.0, 0.0, 0.0, sawine@25: 1.0, 0.0, 0.0, sawine@25: 1.0, 0.0, 0.0, sawine@25: 1.0, 0.0, 0.0, sawine@25: // left face sawine@25: -1.0, 0.0, 0.0, sawine@25: -1.0, 0.0, 0.0, sawine@25: -1.0, 0.0, 0.0, sawine@25: -1.0, 0.0, 0.0]; sawine@25: gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(normals), gl.STATIC_DRAW); sawine@25: this.normalBuffer.itemSize = 3; sawine@25: this.normalBuffer.numItems = 24; sawine@25: sawine@24: this.colourBuffer = gl.createBuffer(); sawine@24: gl.bindBuffer(gl.ARRAY_BUFFER, this.colourBuffer); sawine@24: var alpha = 1.0; sawine@25: var uni = [1.0, 1.0, 1.0, alpha]; sawine@25: var colours = [[0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha], sawine@25: [0.0, 0.0, 0.0, alpha]]; sawine@24: var unpackedColours = []; sawine@24: for (var i in colours) sawine@24: { sawine@25: var colour = uni;//colours[i]; sawine@24: for (var j = 0; j < 4; j++) sawine@24: { sawine@24: unpackedColours = unpackedColours.concat(colour); sawine@24: } sawine@24: //colours = colours.concat([0.5, 0.5, 1.0, 1.0]); sawine@24: } sawine@24: gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(unpackedColours), gl.STATIC_DRAW); sawine@24: this.colourBuffer.itemSize = 4; sawine@24: this.colourBuffer.numItems = 24; sawine@24: sawine@24: this.indexBuffer = gl.createBuffer(); sawine@24: gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); sawine@24: var indices = [0, 1, 2, 0, 2, 3, sawine@24: 4, 5, 6, 4, 6, 7, sawine@24: 8, 9, 10, 8, 10, 11, sawine@24: 12, 13, 14, 12, 14, 15, sawine@24: 16, 17, 18, 16, 18, 19, sawine@24: 20, 21, 22, 20, 22, 23]; sawine@24: gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW); sawine@24: this.indexBuffer.itemSize = 1; sawine@24: this.indexBuffer.numItems = 36; sawine@24: }