annotate fps/fps.html @ 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 <html>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 <head>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 <title>WebGL fps</title>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 <script src="resources/J3DI.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 <script src="resources/J3DIMath.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 <script src="resources/parse.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 <script src="resources/makePanel.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 <script src="resources/jkl-parsexml.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 <script src="resources/keyboard.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 <script src="resources/mouse.js"> </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 </head>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 <script id="vshader" type="x-shader/x-vertex">
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 uniform mat4 u_modelViewProjMatrix;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 uniform mat4 u_normalMatrix;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 uniform vec3 lightDir;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 attribute vec3 vNormal;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 attribute vec4 vTexCoord;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 attribute vec4 vPosition;
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 varying float v_Dot;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 varying vec2 v_texCoord;
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 void main()
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 gl_Position = u_modelViewProjMatrix * vPosition;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 v_texCoord = vTexCoord.st;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 vec4 transNormal = u_normalMatrix * vec4(vNormal,1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 v_Dot = max(dot(transNormal.xyz, lightDir), 0.0);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 <script id="fshader" type="x-shader/x-fragment">
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 #ifdef GL_ES
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 precision mediump float;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 #endif
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 uniform sampler2D sampler2d;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 varying float v_Dot;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 varying vec2 v_texCoord;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 void main()
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 vec4 color = texture2D(sampler2d,v_texCoord);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 color += vec4(0.1,0.1,0.1,1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 // if(color.a == 1.0)color=vec4(1,0,0,1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 // else color=vec4(0,1,1,1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 gl_FragColor = vec4(color.xyz * v_Dot, color.a);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 // gl_FragColor = vec4(color.xyz * v_Dot, 0.5);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 <script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 //画面(canvas)の大きさ
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 var w = 1024;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 var h = 640;
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 //var mvMatrix = mat4.create();
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 function init()
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 gl = initWebGL("game", "vshader", "fshader",
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 [ "vNormal", "vTexCoord", "vPosition"],
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 [ 0, 0, 0, 1 ], 10000);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 gl.uniform3f(gl.getUniformLocation(gl.program, "lightDir"), 1, 1, 1);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 gl.uniform1i(gl.getUniformLocation(gl.program, "sampler2d"), 0);
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 gl.enable(gl.TEXTURE_2D);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 modelMap = new XMLModelMap(gl);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 modelMap.load("./xml/Cube.xml");
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 object = modelMap["Cube"];
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 return gl;
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
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 function XMLModelMap(gl) {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 this.gl = gl;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 XMLModelMap.prototype.load = function(file) {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 var data = parseObj(file);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 if(!data) return;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 for(var name in data) {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 this[name] = makeXmlObj(gl,data[name]);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 this[name].texture = loadImageTexture(this.gl, data[name].image);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 }
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 xPos = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 yPos = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 zPos = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 xEye = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 yEye = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 zEye = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 speedX = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 speedZ = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 rotateX = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 rotateY = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 function reshape(ctx, ortho)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 var canvas = document.getElementById('game');
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 width = canvas.width;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 height = canvas.height;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 ctx.viewport(0, 0, width, height);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 var t = width/height;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 ctx.perspectiveMatrix = new J3DIMatrix4();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 ctx.perspectiveMatrix.frustum(-0.5, 0.5, -0.5 / t, 0.5 / t, 1, 100000);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 FILPCOUNT = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 function loop(ctx, ortho)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 ctx.perspectiveMatrix.lookat([-xEye,-yEye,-zEye], [0,0,-10], [0,1,0]);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 ctx.perspectiveMatrix.translate(-xPos,-yPos,-zPos);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 PutSpriteV(ctx, X, Y, Z, 1, matrix, object);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 move();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 ctx.flush();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 FILPCOUNT++;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 framerate.snapshot();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 function move(){
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 if(speedX != 0) xPos += speedX;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 if(speedZ != 0) zPos -= speedZ;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 if(rotateX != 0) xEye += rotateX;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 if(rotateY != 0) yEye -= rotateY;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 function opening(ctx, ortho)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 reshape(ctx, ortho);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 ctx.flush();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 var f = function() { loop(ctx, ortho); };
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 setInterval(f, 10);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 // display size
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 var W = 1024;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 var H = 640;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 function start()
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 var ortho = {left:0, right:200, bottom:140, top:0}
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 matrix = new J3DIMatrix4(); // global variable
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 X = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 Y = 0;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 Z = -10;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 // var c = document.getElementById("game");
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 // c.width = W;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 // c.height = H;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 var ctx = init();
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 o = function() {opening(ctx, ortho);};
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 setTimeout(o, 10);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 framerate = new Framerate("framerate");
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 function loadFile(objectname)
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 {
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 var filename = "./xml/"+objectname+".xml";
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 modelMap.load(filename);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 // console.log(filename);
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 object = modelMap[objectname];
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 function objToString(obj,map,indent){
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 indent=indent?indent+"\t":"";if(!map)map={};
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 if(map[obj])return;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 map[obj]=true;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 if(typeof obj=="string"||typeof obj=="number"||typeof obj=="boolena")return indent+obj;
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 if(typeof obj=="array"){
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 for(var i=0,s="";i < obj.length;i++ )s+=objToString(obj[i],map,indent)+",";
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 return indent+"["+s+"]";
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 var s="";for(var i in obj)s+=indent+"\t"+i+":"+objToString(obj[i],map)+"\n";return indent+"{"+s+"}";
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 </script>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 <body onload="start()" onkeydown="keyboardDown()" onkeypress="keyboardPress()" onkeyup="keyboardUp()" onmousedown="mouseDown();" onmouseup="mouseUp();" style='overflow:hidden; '>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 <canvas id="game" width=1024 height=640 >
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 </canvas>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 <form onsubmit="loadFile(document.getElementById('filename').value);return false;">
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 <input type="text" id="filename" value="Cube">
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 </form>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 <div id="framerate"></div>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 <div id="console"></div>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 </body>
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 </html>