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
+}
+
+
+
+