Mercurial > hg > Members > e085722 > map
view resources/render/DrawObject.js @ 0:0b8d8ce99f46 default tip
commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Feb 2011 17:06:56 +0900 |
parents | |
children |
line wrap: on
line source
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.translate(xyz[0],xyz[1],xyz[2]) //mvMatrix.quaternion(angle[0],0,1,0); mvMatrix.rotate(angle[0],0,1,0); mvMatrix.rotate(angle[1],1,0,0); mvMatrix.rotate(angle[2],0,0,1); //mvMatrix.quaternion(angle[1],1,0,0); //mvMatrix.quaternion(angle[2],0,0,1); //mvMatrix.rotate(angle[2],0,0,1); //mvMatrix.translate(-xyz[0],-xyz[1],-xyz[2]) mvMatrix.translate(xyz[0],xyz[1],xyz[2]) mvMatrix.scale(scale, scale, scale) mvMatrix.getAsArrayMatrix($my_mat.$matrix) node.mat = $my_mat //hand_mat(node) return node.mat }