Mercurial > hg > Members > e085737 > sample
diff paper_shooting/resources/render/DrawObject.js @ 25:158b846e3874
paper
author | <e085737> |
---|---|
date | Mon, 14 Feb 2011 16:37:16 +0900 |
parents | |
children | 6468848f4d22 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper_shooting/resources/render/DrawObject.js Mon Feb 14 16:37:16 2011 +0900 @@ -0,0 +1,65 @@ +function drawObject_link(ctx, node, angle, xyz, scale, glObj){ + // setup VBOs + ctx.enableVertexAttribArray(0); + ctx.enableVertexAttribArray(1); + ctx.enableVertexAttribArray(2); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject); + ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject); + ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject); + ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject); + + // generate the model-view matrix + + var mvMatrix = create_matrix(node,angle, xyz, scale) + + // construct the normal matrix from the model-view matrix + var normalMatrix = new J3DIMatrix4(mvMatrix); + normalMatrix.invert(); + normalMatrix.transpose(); + normalMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false); + + + // construct the model-view * projection matrix + var mvpMatrix = new J3DIMatrix4(ctx.perspectiveMatrix); + mvpMatrix.multiply(mvMatrix); + mvpMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false); + + ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture); + ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0); +} + + + +create_matrix = function(node, angle, xyz, scale){ + if(node.parents != null){ + var mvMatrix = new J3DIMatrix4() + node.parents.mat.getAsArrayMatrix(mvMatrix.$matrix) + }else{ + var mvMatrix = new J3DIMatrix4() + } + + var $my_mat = new J3DIMatrix4() + + //mvMatrix.rotate(angle[0],0,1,0); + //mvMatrix.rotate(angle[1],1,0,0); + //mvMatrix.rotate(angle[2],0,0,1); + mvMatrix.rotate(angle[0],angle[1],angle[2]); + + mvMatrix.translate(xyz[0],xyz[1],xyz[2]) + mvMatrix.scale(scale, scale, scale) + mvMatrix.getAsArrayMatrix($my_mat.$matrix) + node.mat = $my_mat + + return node.mat +} + + + +