comparison webGL/dandy/dandy4.html @ 14:a2b31fe50d9d

upload
author NOBUYASU Oshiro
date Sat, 17 Jul 2010 08:11:20 +0900
parents 4684e849866c
children 527eac9a7d0b
comparison
equal deleted inserted replaced
13:4684e849866c 14:a2b31fe50d9d
65 { 65 {
66 gl_Position = u_modelViewProjMatrix * vPosition; 66 gl_Position = u_modelViewProjMatrix * vPosition;
67 v_texCoord = vTexCoord.st; 67 v_texCoord = vTexCoord.st;
68 vec4 transNormal = u_normalMatrix * vec4(vNormal,1); 68 vec4 transNormal = u_normalMatrix * vec4(vNormal,1);
69 v_Dot = max(dot(transNormal.xyz, lightDir), 0.0); 69 v_Dot = max(dot(transNormal.xyz, lightDir), 0.0);
70 // v_Dot = min(dot(transNormal.xyz, lightDir), 1.0); 70 // v_Dot = min(dot(transNormal.xyz, lightDir), 1.0);
71 } 71 }
72 </script> 72 </script>
73 73
74 <script id="fshader" type="x-shader/x-fragment"> 74 <script id="fshader" type="x-shader/x-fragment">
75 uniform sampler2D sampler2d; 75 uniform sampler2D sampler2d;
78 varying vec2 v_texCoord; 78 varying vec2 v_texCoord;
79 79
80 void main() 80 void main()
81 { 81 {
82 vec4 color = texture2D(sampler2d,v_texCoord); 82 vec4 color = texture2D(sampler2d,v_texCoord);
83 // color += vec4(0.1,0.1,0.1,1); 83 // color += vec4(0.1,0.1,0.1,1);
84 // if(color.a == 1)color=vec4(1,0,0,1); 84 // if(color.a == 1)color=vec4(1,0,0,1);
85 // else color=vec4(0,1,1,1); 85 // else color=vec4(0,1,1,1);
86 gl_FragColor = vec4(color.xyz * v_Dot, color.a); 86 gl_FragColor = vec4(color.xyz * v_Dot, color.a);
87 // gl_FragColor = vec4(color.xyz * v_Dot, 0.5); 87 // gl_FragColor = vec4(color.xyz * v_Dot, 0.5);
88 } 88 }
89 </script> 89 </script>
90 90
91 <script> 91 <script>
92 //audioの試運転 92 //audioの試運転
93 var audio = window.Audio && new Audio("sound/sample.wav"); 93 var audio = window.Audio && new Audio("sound/sample.wav");
94 var audioShoot = window.Audio && new Audio("sound/shota.wav"); 94 var audioShoot = window.Audio && new Audio("sound/shota.wav");
95 95
96 //画面(canvas)の大きさ 96 //画面(canvas)の大きさ
97 var w = 1024; 97 var w = 1024;
98 var h = 640; 98 var h = 640;
99 99
100 100
101 101
102 function init() 102 function init()
103 { 103 {
104 var gl = initWebGL("example", "vshader", "fshader", 104 var gl = initWebGL("example", "vshader", "fshader",
105 [ "vNormal", "vTexCoord", "vPosition"], 105 [ "vNormal", "vTexCoord", "vPosition"],
106 [ 0, 0, 0, 1 ], 10000); 106 [ 0, 0, 0, 1 ], 10000);
107 107
108 gl.uniform3f(gl.getUniformLocation(gl.program, "lightDir"), 0, 0, 1); 108 gl.uniform3f(gl.getUniformLocation(gl.program, "lightDir"), 0, 0, 1);
109 gl.uniform1i(gl.getUniformLocation(gl.program, "sampler2d"), 0); 109 gl.uniform1i(gl.getUniformLocation(gl.program, "sampler2d"), 0);
110 110
111 gl.enable(gl.TEXTURE_2D); 111 gl.enable(gl.TEXTURE_2D);
112 112
113 sankakuf();//mycos,mysinの作成 sankaku.js 113 sankakuf();//mycos,mysinの作成 sankaku.js
114 114
115 parseXml(gl);//parse.js 115 parseXml(gl);//parse.js
116 116
117 return gl; 117 return gl;
118 } 118 }
119 119
120 width = -1; 120 width = -1;
121 height = -1; 121 height = -1;
123 function reshape(ctx, ortho) 123 function reshape(ctx, ortho)
124 { 124 {
125 var canvas = document.getElementById('example'); 125 var canvas = document.getElementById('example');
126 if (canvas.width == width && canvas.width == height) 126 if (canvas.width == width && canvas.width == height)
127 return; 127 return;
128 128
129 129
130 width = canvas.width; 130 width = canvas.width;
131 height = canvas.height; 131 height = canvas.height;
132 132
133 ctx.viewport(0, 0, width, height); 133 ctx.viewport(0, 0, width, height);
134 134
135 ctx.perspectiveMatrix = new CanvasMatrix4(); 135 ctx.perspectiveMatrix = new CanvasMatrix4();
136 ctx.perspectiveMatrix.lookat(0,0,-60, 0, 0, 0, 0, 1, 0); 136 ctx.perspectiveMatrix.lookat(0,0,-60, 0, 0, 0, 0, 1, 0);
137 ctx.perspectiveMatrix.ortho(ortho.left, ortho.right, ortho.top, -ortho.bottom, 0, 10000); 137 ctx.perspectiveMatrix.ortho(ortho.left, ortho.right, ortho.top, -ortho.bottom, 0, 10000);
138 // ctx.perspectiveMatrix.ortho(-600, 600, 600, -600, 0, 10000); 138 // ctx.perspectiveMatrix.ortho(-600, 600, 600, -600, 0, 10000);
139 } 139 }
140 140
141 141
142 142
143 function loop(ctx, ortho) 143 function loop(ctx, ortho)
144 { 144 {
145 reshape(ctx, ortho); 145 reshape(ctx, ortho);
146 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT); 146 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);
147 147
148 148
149 149
150 Player(ctx, jiki, pad, ortho); 150 Player(ctx, jiki, pad, ortho);
151 151
152 obj_draw(ctx); 152 obj_draw(ctx);
153 153
154 PutBom(ctx); 154 PutBom(ctx);
155 pause(); 155 pause();
156 156
157 157
158 ctx.flush(); 158 ctx.flush();
159 159
160 filpcount++; 160 filpcount++;
161 schedule(); 161 schedule();
162 162
163 state_update(); 163 state_update();
164 164
165 collision_detect(); 165 collision_detect();
166 delete_obj( ctx ) 166 delete_obj( ctx )
167 167
168 framerate.snapshot(); 168 framerate.snapshot();
169 } 169 }
170 170
171 function opening(ctx, ortho) 171 function opening(ctx, ortho)
172 { 172 {
173 reshape(ctx, ortho); 173 reshape(ctx, ortho);
174 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT); 174 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);
175 175
176 PutSpriteF(ctx, 100, 70, 1, font[10]); 176 PutSpriteF(ctx, 100, 70, 1, font[10]);
177 PutSpriteF(ctx, 170, 50, 1, font[11]); 177 PutSpriteF(ctx, 170, 50, 1, font[11]);
178 PutSpriteF(ctx, 40, 120, 1, font[12]); 178 PutSpriteF(ctx, 40, 120, 1, font[12]);
179 179
180 180
181 ctx.flush(); 181 ctx.flush();
182 182
183 if(pad.start == 0) {setTimeout(o, 100);} 183 if(pad.start == 0) {setTimeout(o, 100);}
184 if(pad.start != 0) { 184 if(pad.start != 0) {
185 jiki.bf = true; 185 jiki.bf = true;
186 pad.st = 1; 186 pad.st = 1;
187 gameflage = 1; 187 gameflage = 1;
188 audio && audio.play(); 188 audio && audio.play();
189 setInterval(f, 10); 189 setInterval(f, 10);
190 } 190 }
191 } 191 }
192 function start() 192 function start()
193 { 193 {
194 // event.onkeydown = keydown; 194 // event.onkeydown = keydown;
195 // event.onkeypress = keypress; 195 // event.onkeypress = keypress;
196 // event.onkeyup = keyup; 196 // event.onkeyup = keyup;
197 197
198 var ortho = makeOrthoPara(0,200,140,0); 198 var ortho = makeOrthoPara(0,200,140,0);
199 199
200 var c = document.getElementById("example"); 200 var c = document.getElementById("example");
201 201
202 202
203 //画面の大きさ 203 //画面の大きさ
204 c.width = w; 204 c.width = w;
205 c.height = h; 205 c.height = h;
206 206
207 var ctx = init(); 207 var ctx = init();
208 208
209 currentAngle = 0; 209 currentAngle = 0;
210 // var f = function() { loop(ctx, ortho) }; 210 // var f = function() { loop(ctx, ortho) };
211 f = function() { loop(ctx, ortho) }; 211 f = function() { loop(ctx, ortho) };
212 o = function() {opening(ctx, ortho)} 212 o = function() {opening(ctx, ortho)}
213 setTimeout(o, 10); 213 setTimeout(o, 10);
214 // if(pad.start != 0) setInterval(f, 10); 214 // if(pad.start != 0) setInterval(f, 10);
215 // setInterval(f, 10); 215 // setInterval(f, 10);
216 framerate = new Framerate("framerate"); 216 framerate = new Framerate("framerate");
217 } 217 }
218 </script> 218 </script>
219 <style type="text/css"> 219 <style type="text/css">
220 canvas { 220 canvas {
221 border: 2px solid black; 221 border: 2px solid black;
222 } 222 }
223 </style> 223 </style>
224 </head> 224 </head>
225 <body onload="start()" onkeydown="keybordDown()" onkeypress="keybordPress()" onkeyup="keybordUp()" style='overflow:hidden'> 225 <body onload="start()" onkeydown="keybordDown()" onkeypress="keybordPress()" onkeyup="keybordUp()" style='overflow:hidden'>
226 <!--<body onload = "start()" style='overflow:hidden'> --> 226 <!--<body onload = "start()" style='overflow:hidden'> -->
227 <canvas id="example"> 227 <canvas id="example">
228 There is supposed to be an example drawing here, but it's not important. 228 There is supposed to be an example drawing here, but it's not important.
229 </canvas> 229 </canvas>
230 <div id="framerate"></div> 230 <div id="framerate"></div>
231 <div id="console"></div> 231 <div id="console"></div>