From ff1a81bab32767248f5c9704c20cdd6e871287db Mon Sep 17 00:00:00 2001 From: badlogic Date: Thu, 14 Sep 2017 12:15:23 +0200 Subject: [PATCH] [webgl] Refactored demos to use preallocated canvas & context --- spine-ts/webgl/demos/clipping.html | 12 ++++++----- spine-ts/webgl/demos/clipping.js | 12 +++-------- spine-ts/webgl/demos/hoverboard.html | 7 ++++-- spine-ts/webgl/demos/hoverboard.js | 13 ++++------- spine-ts/webgl/demos/imagechanges.html | 8 ++++--- spine-ts/webgl/demos/imagechanges.js | 9 ++------ spine-ts/webgl/demos/meshes.html | 8 ++++--- spine-ts/webgl/demos/meshes.js | 10 ++------- spine-ts/webgl/demos/skins.html | 7 ++++-- spine-ts/webgl/demos/skins.js | 9 ++------ spine-ts/webgl/demos/spritesheets.html | 10 +++++---- spine-ts/webgl/demos/spritesheets.js | 9 ++------ spine-ts/webgl/demos/stretchyman.html | 7 ++++-- spine-ts/webgl/demos/stretchyman.js | 9 ++------ spine-ts/webgl/demos/tank.html | 8 ++++--- spine-ts/webgl/demos/tank.js | 9 ++------ spine-ts/webgl/demos/transforms.html | 12 ++++++----- spine-ts/webgl/demos/transforms.js | 9 ++------ spine-ts/webgl/demos/transitions.html | 8 ++++--- spine-ts/webgl/demos/transitions.js | 10 +++------ spine-ts/webgl/demos/utils.js | 30 ++++++++++++++++++++++---- spine-ts/webgl/demos/vine.html | 10 +++++---- spine-ts/webgl/demos/vine.js | 9 ++------ 23 files changed, 113 insertions(+), 122 deletions(-) diff --git a/spine-ts/webgl/demos/clipping.html b/spine-ts/webgl/demos/clipping.html index a9f8952b7..6565d2d47 100644 --- a/spine-ts/webgl/demos/clipping.html +++ b/spine-ts/webgl/demos/clipping.html @@ -9,15 +9,17 @@
-
+
+
-
- Draw triangles
+ Draw triangles
diff --git a/spine-ts/webgl/demos/clipping.js b/spine-ts/webgl/demos/clipping.js index 55604db73..f35157097 100644 --- a/spine-ts/webgl/demos/clipping.js +++ b/spine-ts/webgl/demos/clipping.js @@ -1,5 +1,5 @@ -var clippingDemo = function(loadingComplete, bgColor) { - var canvas, gl, renderer, assetManager; +var clippingDemo = function(canvas, loadingComplete, bgColor) { + var gl, renderer, assetManager; var skeleton, state, bounds; var timeKeeper, loadingScreen; var playButton, timeline, isPlaying = true, playTime = 0; @@ -9,14 +9,8 @@ var clippingDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("clipping-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } - + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; var textureLoader = function(img) { return new spine.webgl.GLTexture(gl, img); }; diff --git a/spine-ts/webgl/demos/hoverboard.html b/spine-ts/webgl/demos/hoverboard.html index c7bc4e4bd..6f8184ef1 100644 --- a/spine-ts/webgl/demos/hoverboard.html +++ b/spine-ts/webgl/demos/hoverboard.html @@ -9,7 +9,7 @@
-
+
> Display Bones
Aim
@@ -17,7 +17,10 @@
diff --git a/spine-ts/webgl/demos/hoverboard.js b/spine-ts/webgl/demos/hoverboard.js index 23d9e3038..56656c17a 100644 --- a/spine-ts/webgl/demos/hoverboard.js +++ b/spine-ts/webgl/demos/hoverboard.js @@ -1,10 +1,10 @@ -var hoverboardDemo = function(loadingComplete, bgColor) { +var hoverboardDemo = function(canvas, loadingComplete, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); var COLOR_OUTER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.8); - var canvas, gl, renderer, input, assetManager; + var gl, renderer, input, assetManager; var skeleton, state, bounds; var timeKeeper, loadingScreen; var target = null; @@ -18,13 +18,8 @@ var hoverboardDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("hoverboard-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -114,7 +109,7 @@ var hoverboardDemo = function(loadingComplete, bgColor) { state.addAnimation(aimTrack, "aim", true, 0.4).mixDuration = 0.2; }); } - + function setupInput () { input.addListener({ down: function(x, y) { diff --git a/spine-ts/webgl/demos/imagechanges.html b/spine-ts/webgl/demos/imagechanges.html index fdec4dcfc..f2d3cfc4a 100644 --- a/spine-ts/webgl/demos/imagechanges.html +++ b/spine-ts/webgl/demos/imagechanges.html @@ -9,15 +9,17 @@
-
+

diff --git a/spine-ts/webgl/demos/imagechanges.js b/spine-ts/webgl/demos/imagechanges.js index fabcbe6ab..0bb11cc76 100644 --- a/spine-ts/webgl/demos/imagechanges.js +++ b/spine-ts/webgl/demos/imagechanges.js @@ -1,4 +1,4 @@ -var imageChangesDemo = function(loadingComplete, bgColor) { +var imageChangesDemo = function(canvas, loadingComplete, bgColor) { var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1); var canvas, gl, renderer, input, assetManager; @@ -13,13 +13,8 @@ var imageChangesDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("imagechanges-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/meshes.html b/spine-ts/webgl/demos/meshes.html index 748a1a76f..026360e52 100644 --- a/spine-ts/webgl/demos/meshes.html +++ b/spine-ts/webgl/demos/meshes.html @@ -9,7 +9,7 @@
-
+


@@ -18,8 +18,10 @@
diff --git a/spine-ts/webgl/demos/meshes.js b/spine-ts/webgl/demos/meshes.js index 898f248d4..36f6a09ad 100644 --- a/spine-ts/webgl/demos/meshes.js +++ b/spine-ts/webgl/demos/meshes.js @@ -1,4 +1,4 @@ -var meshesDemo = function(loadingComplete, bgColor) { +var meshesDemo = function(canvas, loadingComplete, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, bounds; var timeKeeper, loadingScreen; @@ -11,14 +11,8 @@ var meshesDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("meshes-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } - + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); renderer.skeletonDebugRenderer.drawRegionAttachments = false; assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/skins.html b/spine-ts/webgl/demos/skins.html index 8acdf8d41..0c9b8ea28 100644 --- a/spine-ts/webgl/demos/skins.html +++ b/spine-ts/webgl/demos/skins.html @@ -9,7 +9,7 @@
-
+


@@ -17,7 +17,10 @@
diff --git a/spine-ts/webgl/demos/skins.js b/spine-ts/webgl/demos/skins.js index 2c68faaf5..a473f9383 100644 --- a/spine-ts/webgl/demos/skins.js +++ b/spine-ts/webgl/demos/skins.js @@ -1,4 +1,4 @@ -var skinsDemo = function(loadingComplete, bgColor) { +var skinsDemo = function(canvas, loadingComplete, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, state, offset, bounds; var timeKeeper, loadingScreen; @@ -10,13 +10,8 @@ var skinsDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("skins-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/spritesheets.html b/spine-ts/webgl/demos/spritesheets.html index c499bcb6a..d936c13ea 100644 --- a/spine-ts/webgl/demos/spritesheets.html +++ b/spine-ts/webgl/demos/spritesheets.html @@ -9,16 +9,18 @@
-
+

Time multiplier
- diff --git a/spine-ts/webgl/demos/spritesheets.js b/spine-ts/webgl/demos/spritesheets.js index 4e4cbd80f..4d21705ee 100644 --- a/spine-ts/webgl/demos/spritesheets.js +++ b/spine-ts/webgl/demos/spritesheets.js @@ -1,4 +1,4 @@ -var spritesheetsDemo = function(loadingComplete, bgColor) { +var spritesheetsDemo = function(canvas, loadingComplete, bgColor) { var SKELETON_ATLAS_COLOR = new spine.Color(0, 0.8, 0, 0.8); var FRAME_ATLAS_COLOR = new spine.Color(0.8, 0, 0, 0.8); @@ -16,13 +16,8 @@ var spritesheetsDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("spritesheets-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/stretchyman.html b/spine-ts/webgl/demos/stretchyman.html index f2d31ecab..8f9ef9030 100644 --- a/spine-ts/webgl/demos/stretchyman.html +++ b/spine-ts/webgl/demos/stretchyman.html @@ -9,12 +9,15 @@
-
+
Display bones
diff --git a/spine-ts/webgl/demos/stretchyman.js b/spine-ts/webgl/demos/stretchyman.js index 16dbc156f..8bbe6cc34 100644 --- a/spine-ts/webgl/demos/stretchyman.js +++ b/spine-ts/webgl/demos/stretchyman.js @@ -1,4 +1,4 @@ -var stretchymanDemo = function(loadingComplete, bgColor) { +var stretchymanDemo = function(canvas, loadingComplete, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); @@ -26,13 +26,8 @@ var stretchymanDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("stretchyman-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/tank.html b/spine-ts/webgl/demos/tank.html index 0c9c6d803..02868ec7a 100644 --- a/spine-ts/webgl/demos/tank.html +++ b/spine-ts/webgl/demos/tank.html @@ -9,15 +9,17 @@
-
+

Display bones
diff --git a/spine-ts/webgl/demos/tank.js b/spine-ts/webgl/demos/tank.js index 5cbeba3dc..e57822c46 100644 --- a/spine-ts/webgl/demos/tank.js +++ b/spine-ts/webgl/demos/tank.js @@ -1,4 +1,4 @@ -var tankDemo = function(loadingComplete, bgColor) { +var tankDemo = function(canvas, loadingComplete, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, state, offset, bounds; var timeKeeper, loadingScreen; @@ -9,13 +9,8 @@ var tankDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("tank-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/transforms.html b/spine-ts/webgl/demos/transforms.html index 6b2ec36ff..9a32b3304 100644 --- a/spine-ts/webgl/demos/transforms.html +++ b/spine-ts/webgl/demos/transforms.html @@ -9,16 +9,18 @@
-
+
Rotation offset

Translation mix -
+
- diff --git a/spine-ts/webgl/demos/transforms.js b/spine-ts/webgl/demos/transforms.js index fd999c6d7..43ea78895 100644 --- a/spine-ts/webgl/demos/transforms.js +++ b/spine-ts/webgl/demos/transforms.js @@ -1,4 +1,4 @@ -var transformsDemo = function(loadingComplete, bgColor) { +var transformsDemo = function(canvas, loadingComplete, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); @@ -20,13 +20,8 @@ var transformsDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("transforms-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/transitions.html b/spine-ts/webgl/demos/transitions.html index 9f173191f..471604b57 100644 --- a/spine-ts/webgl/demos/transitions.html +++ b/spine-ts/webgl/demos/transitions.html @@ -9,15 +9,17 @@
-
+
Time multiplier

diff --git a/spine-ts/webgl/demos/transitions.js b/spine-ts/webgl/demos/transitions.js index 0c653da0e..a482f2d9e 100644 --- a/spine-ts/webgl/demos/transitions.js +++ b/spine-ts/webgl/demos/transitions.js @@ -1,4 +1,4 @@ -var transitionsDemo = function(loadingComplete, bgColor) { +var transitionsDemo = function(canvas, loadingComplete, bgColor) { var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1); var canvas, gl, renderer, input, assetManager; @@ -15,13 +15,9 @@ var transitionsDemo = function(loadingComplete, bgColor) { timeSlider = $("#transitions-timeslider").data("slider"); timeSlider.set(0.5); timeSliderLabel = $("#transitions-timeslider-label")[0]; - canvas = document.getElementById("transitions-canvas"); + canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; diff --git a/spine-ts/webgl/demos/utils.js b/spine-ts/webgl/demos/utils.js index 23289b135..bfb1447f9 100644 --- a/spine-ts/webgl/demos/utils.js +++ b/spine-ts/webgl/demos/utils.js @@ -3,9 +3,10 @@ var spineDemos = { HOVER_COLOR_OUTER: new spine.Color(1, 1, 1, 1), NON_HOVER_COLOR_INNER: new spine.Color(0.478, 0, 0, 0.5), NON_HOVER_COLOR_OUTER: new spine.Color(1, 0, 0, 0.8), - assetManager: new spine.SharedAssetManager("http://esotericsoftware.com/demos/exports/"), + assetManager: new spine.SharedAssetManager("assets/"), demos: [], - loopRunning: false + loopRunning: false, + canvases: [] }; (function () { var timeKeeper = new spine.TimeKeeper(); @@ -13,7 +14,7 @@ var spineDemos = { timeKeeper.update(); if (spineDemos.log) console.log(timeKeeper.delta + ", " + timeKeeper.framesPerSecond); requestAnimationFrame(loop); - var demos = spineDemos.demos; + var demos = spineDemos.demos; for (var i = 0; i < demos.length; i++) { var demo = demos[i]; var canvas = demo.canvas; @@ -41,13 +42,34 @@ var spineDemos = { checkElementVisible(demo); }); checkElementVisible(demo); - if (!spineDemos.loopRunning) { + if (!spineDemos.loopRunning) { loop(); spineDemos.loopRunning = true; } spineDemos.demos.push(demo); }; + spineDemos.init = function () { + spineDemos.createCanvases(3); + spineDemos.loadSliders(); + } + + spineDemos.createCanvases = function (numCanvases) { + for (var i = 0; i < numCanvases; i++) { + var canvas = document.createElement("canvas"); + canvas.ctx = new spine.webgl.ManagedWebGLRenderingContext(canvas, { alpha: false }); + spineDemos.canvases.push(canvas); + } + } + + spineDemos.obtainCanvas = function () { + return spineDemos.canvases.splice(0, 1)[0]; + } + + spineDemos.freeCanvas = function (canvas) { + canvases.push(canvas); + } + spineDemos.loadSliders = function () { $(window).resize(function() { $(".slider").each(function () { diff --git a/spine-ts/webgl/demos/vine.html b/spine-ts/webgl/demos/vine.html index 89c7af28b..df9b4b2a9 100644 --- a/spine-ts/webgl/demos/vine.html +++ b/spine-ts/webgl/demos/vine.html @@ -9,15 +9,17 @@
-
+

Display bones & path
- diff --git a/spine-ts/webgl/demos/vine.js b/spine-ts/webgl/demos/vine.js index 5f1029954..f0b4cdf65 100644 --- a/spine-ts/webgl/demos/vine.js +++ b/spine-ts/webgl/demos/vine.js @@ -1,4 +1,4 @@ -var vineDemo = function(loadingComplete, bgColor) { +var vineDemo = function(canvas, loadingComplete, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); @@ -18,13 +18,8 @@ var vineDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("vine-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); input = new spine.webgl.Input(canvas);