Mercurial > hg > Members > e085711
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> |