OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 define([ | 5 define([ |
6 'console', | 6 'console', |
| 7 'monotonic_clock', |
7 'timer', | 8 'timer', |
8 'mojo/apps/js/bindings/connector', | 9 'mojo/apps/js/bindings/connector', |
9 'mojo/apps/js/bindings/core', | 10 'mojo/apps/js/bindings/core', |
10 'mojo/apps/js/bindings/gl', | 11 'mojo/apps/js/bindings/gl', |
11 'mojo/apps/js/bindings/threading', | 12 'mojo/apps/js/bindings/threading', |
12 'mojom/native_viewport', | 13 'mojom/native_viewport', |
13 'mojom/gles2', | 14 'mojom/gles2', |
14 'mojom/shell', | 15 'mojom/shell', |
15 ], function(console, | 16 ], function(console, |
| 17 monotonicClock, |
16 timer, | 18 timer, |
17 connector, | 19 connector, |
18 core, | 20 core, |
19 gljs, | 21 gljs, |
20 threading, | 22 threading, |
21 nativeViewport, | 23 nativeViewport, |
22 gles2, | 24 gles2, |
23 shell) { | 25 shell) { |
24 | 26 |
25 const VERTEX_SHADER_SOURCE = [ | 27 const VERTEX_SHADER_SOURCE = [ |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 NativeViewportClientImpl.prototype.onCreated = function() { | 308 NativeViewportClientImpl.prototype.onCreated = function() { |
307 console.log('NativeViewportClientImpl.prototype.OnCreated'); | 309 console.log('NativeViewportClientImpl.prototype.OnCreated'); |
308 }; | 310 }; |
309 NativeViewportClientImpl.prototype.didOpen = function() { | 311 NativeViewportClientImpl.prototype.didOpen = function() { |
310 console.log('NativeViewportClientImpl.prototype.DidOpen'); | 312 console.log('NativeViewportClientImpl.prototype.DidOpen'); |
311 }; | 313 }; |
312 | 314 |
313 | 315 |
314 function GLES2ClientImpl(remote) { | 316 function GLES2ClientImpl(remote) { |
315 this.remote_ = remote; | 317 this.remote_ = remote; |
316 this.lastTime_ = Date.now(); | 318 this.lastTime_ = monotonicClock.seconds(); |
317 this.angle_ = 45; | 319 this.angle_ = 45; |
318 } | 320 } |
319 GLES2ClientImpl.prototype = | 321 GLES2ClientImpl.prototype = |
320 Object.create(gles2.GLES2ClientStub.prototype); | 322 Object.create(gles2.GLES2ClientStub.prototype); |
321 | 323 |
322 GLES2ClientImpl.prototype.didCreateContext = function(encoded, | 324 GLES2ClientImpl.prototype.didCreateContext = function(encoded, |
323 width, | 325 width, |
324 height) { | 326 height) { |
325 this.width_ = width; | 327 this.width_ = width; |
326 this.height_ = height; | 328 this.height_ = height; |
(...skipping 20 matching lines...) Expand all Loading... |
347 this.gl_.vertexAttribPointer(this.positionLocation_, 3, this.gl_.FLOAT, | 349 this.gl_.vertexAttribPointer(this.positionLocation_, 3, this.gl_.FLOAT, |
348 false, 12, 0); | 350 false, 12, 0); |
349 this.gl_.enableVertexAttribArray(this.positionLocation_); | 351 this.gl_.enableVertexAttribArray(this.positionLocation_); |
350 this.gl_.uniformMatrix4fv(this.mvpLocation_, false, this.mvpMatrix_.m); | 352 this.gl_.uniformMatrix4fv(this.mvpLocation_, false, this.mvpMatrix_.m); |
351 this.gl_.drawElements(this.gl_.TRIANGLES, this.numIndices_, | 353 this.gl_.drawElements(this.gl_.TRIANGLES, this.numIndices_, |
352 this.gl_.UNSIGNED_SHORT, 0); | 354 this.gl_.UNSIGNED_SHORT, 0); |
353 this.gl_.swapBuffers(); | 355 this.gl_.swapBuffers(); |
354 }; | 356 }; |
355 | 357 |
356 GLES2ClientImpl.prototype.handleTimer = function() { | 358 GLES2ClientImpl.prototype.handleTimer = function() { |
357 var now = Date.now(); | 359 var now = monotonicClock.seconds(); |
358 var timeDelta = Date.now() - this.lastTime_; | 360 var secondsDelta = now - this.lastTime_; |
359 this.lastTime_ = now; | 361 this.lastTime_ = now; |
360 | 362 |
361 this.angle_ += this.getRotationForTimeDelgate(timeDelta); | 363 this.angle_ += this.getRotationForTimeDelta(secondsDelta); |
362 this.angle_ = this.angle_ % 360; | 364 this.angle_ = this.angle_ % 360; |
363 | 365 |
364 var aspect = this.width_ / this.height_; | 366 var aspect = this.width_ / this.height_; |
365 | 367 |
366 var perspective = new ESMatrix(); | 368 var perspective = new ESMatrix(); |
367 perspective.loadIdentity(); | 369 perspective.loadIdentity(); |
368 perspective.perspective(60, aspect, 1, 20); | 370 perspective.perspective(60, aspect, 1, 20); |
369 | 371 |
370 var modelView = new ESMatrix(); | 372 var modelView = new ESMatrix(); |
371 modelView.loadIdentity(); | 373 modelView.loadIdentity(); |
372 modelView.translate(0, 0, -2); | 374 modelView.translate(0, 0, -2); |
373 modelView.rotate(this.angle_, 1, 0, 1); | 375 modelView.rotate(this.angle_, 1, 0, 1); |
374 | 376 |
375 this.mvpMatrix_.multiply(modelView, perspective); | 377 this.mvpMatrix_.multiply(modelView, perspective); |
376 | 378 |
377 this.drawCube(); | 379 this.drawCube(); |
378 }; | 380 }; |
379 | 381 |
380 GLES2ClientImpl.prototype.getRotationForTimeDelgate = function(timeDelta) { | 382 GLES2ClientImpl.prototype.getRotationForTimeDelta = function(secondsDelta) { |
381 return timeDelta * .04; | 383 return secondsDelta * 40; |
382 }; | 384 }; |
383 | 385 |
384 GLES2ClientImpl.prototype.contextLost = function() { | 386 GLES2ClientImpl.prototype.contextLost = function() { |
385 console.log('GLES2ClientImpl.prototype.contextLost'); | 387 console.log('GLES2ClientImpl.prototype.contextLost'); |
386 }; | 388 }; |
387 | 389 |
388 | 390 |
389 return function(handle) { | 391 return function(handle) { |
390 new connector.Connection(handle, SampleApp, shell.ShellProxy); | 392 new connector.Connection(handle, SampleApp, shell.ShellProxy); |
391 }; | 393 }; |
392 }); | 394 }); |
OLD | NEW |