annotate fps/resources/parse.js @ 0:fbb6f4f89f76

info3_1week
author Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
date Fri, 27 Apr 2012 13:13:49 +0900
parents
children 6b217e0f301c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 function loadObjXml(gl,url)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 if(gl.obj == undefined) gl.obj = new Object();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 var xmlChara = new Object();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 xmlChara = parseObj(url);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 for (var name in xmlChara)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 gl.obj[name] = makeXmlObj(gl, xmlChara[name]);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 gl.obj[name].texture = loadImageTexture(gl, xmlChara[name].image);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 function PutSpriteF(ctx, x, y, scale, glObj)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 PutSpriteA(ctx,x,y,10, scale, 0, glObj);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 function PutSpriteA(ctx, x, y, z, scale, angle, glObj)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 // setup VBOs
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 ctx.enableVertexAttribArray(0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 ctx.enableVertexAttribArray(1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 ctx.enableVertexAttribArray(2);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 // generate the model-view matrix
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 var mvMatrix = new J3DIMatrix4();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 mvMatrix.translate( x, y, z);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 mvMatrix.scale(scale, scale, scale);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 mvMatrix.rotate(angle, 0, 0, 1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 // construct the normal matrix from the model-view matrix
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 var normalMatrix = new J3DIMatrix4(mvMatrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 normalMatrix.invert();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 normalMatrix.transpose();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 normalMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 // construct the model-view * projection matrix
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 var mvpMatrix = new J3DIMatrix4(ctx.perspectiveMatrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 mvpMatrix.multiply(mvMatrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 mvpMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 // matrix version
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 function PutSpriteV(ctx, x, y, z, scale, matrix, glObj)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 // setup VBOs
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 ctx.enableVertexAttribArray(0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 ctx.enableVertexAttribArray(1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 ctx.enableVertexAttribArray(2);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 // generate the model-view matrix
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 var mvMatrix = new J3DIMatrix4();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 mvMatrix.translate( x, y, z);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 mvMatrix.scale(scale, scale, scale);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 mvMatrix.multiply(matrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 // construct the normal matrix from the model-view matrix
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 var normalMatrix = new J3DIMatrix4(mvMatrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 normalMatrix.invert();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 normalMatrix.transpose();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 normalMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 // construct the model-view * projection matrix
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 var mvpMatrix = new J3DIMatrix4(ctx.perspectiveMatrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 mvpMatrix.multiply(mvMatrix);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 mvpMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 }