From a9638ed981f232fa58d1c9760a78e093b893fead Mon Sep 17 00:00:00 2001 From: Rob Hawkes Date: Fri, 1 Nov 2013 14:35:33 +0000 Subject: [PATCH] Added renderer info debug --- Gruntfile.js | 1 + src/client/City.js | 1 + src/client/debug/RendererInfo.js | 71 ++++++++++++++++++++++++++++++++ src/client/webgl/Camera.js | 2 +- src/client/webgl/Renderer.js | 1 + 5 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 src/client/debug/RendererInfo.js diff --git a/Gruntfile.js b/Gruntfile.js index db32f1f..687ddf5 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -30,6 +30,7 @@ module.exports = function(grunt) { 'src/client/Mediator.js', 'src/client/debug/Dat.js', 'src/client/debug/FPS.js', + 'src/client/debug/RendererInfo.js', 'src/client/Geo.js', 'src/client/City.js', 'src/client/Loop.js', diff --git a/src/client/City.js b/src/client/City.js index 92a8078..5e73aeb 100644 --- a/src/client/City.js +++ b/src/client/City.js @@ -10,6 +10,7 @@ // Set up debug tools this.dat = new VIZI.Dat(); this.fps = new VIZI.FPS(); + this.rendererInfo = new VIZI.RendererInfo(); // Set up geo methods this.geo = VIZI.Geo.getInstance({ diff --git a/src/client/debug/RendererInfo.js b/src/client/debug/RendererInfo.js new file mode 100644 index 0000000..2ca375a --- /dev/null +++ b/src/client/debug/RendererInfo.js @@ -0,0 +1,71 @@ +/* globals window, _, VIZI */ +(function() { + "use strict"; + + VIZI.RendererInfo = function() { + VIZI.Log("Inititialising renderer info"); + + _.extend(this, VIZI.Mediator); + + this.domContainer = this.createDOMContainer(); + this.domRender = this.createDOMElement(); + this.domMemory = this.createDOMElement(); + + this.subscribe("updateRendererInfo", this.update); + }; + + VIZI.RendererInfo.prototype.createDOMContainer = function() { + VIZI.Log("Creating renderer info DOM container"); + + var container = document.createElement("div"); + container.id = "renderer-info-container"; + container.style.position = "absolute"; + container.style.left = 0; + container.style.bottom = 0; + + document.body.appendChild(container); + + return container; + }; + + VIZI.RendererInfo.prototype.createDOMElement = function() { + VIZI.Log("Creating renderer info DOM element"); + + var element = document.createElement("div"); + element.style.float = "left"; + element.style.color = "#999"; + element.style.fontFamily = "sans-serif"; + element.style.fontSize = "10px"; + element.style.fontWeight = "bold"; + element.style.lineHeight = "1.2em"; + element.style.margin = "5px"; + element.style.textAlign = "left"; + element.style.textTransform = "uppercase"; + element.style.width = "100px"; + + this.domContainer.appendChild(element); + + return element; + }; + + VIZI.RendererInfo.prototype.createInfoStrings = function(info) { + var memoryString = ""; + memoryString += "Programs: " + info.memory.programs + "
"; + memoryString += "Geometries: " + info.memory.geometries + "
"; + memoryString += "Textures: " + info.memory.textures + "
"; + + var renderString = ""; + renderString += "Calls: " + info.render.calls + "
"; + renderString += "Vertices: " + info.render.vertices + "
"; + renderString += "Faces: " + info.render.faces + "
"; + renderString += "Points: " + info.render.points + "
"; + + return [renderString, memoryString]; + }; + + VIZI.RendererInfo.prototype.update = function(info) { + var infoStrings = this.createInfoStrings(info); + this.domRender.innerHTML = infoStrings[0]; + this.domMemory.innerHTML = infoStrings[1]; + }; +}()); \ No newline at end of file diff --git a/src/client/webgl/Camera.js b/src/client/webgl/Camera.js index 4463a8c..ebbe8a1 100644 --- a/src/client/webgl/Camera.js +++ b/src/client/webgl/Camera.js @@ -20,7 +20,7 @@ this.lookAtTarget(); this.publish("addToScene", this.camera); - this.publish("addToDat", this, {name: "Camera", properties: ["cameraRadius", "theta", "phi", "lookAtTarget", "updatePosition"]}); + this.publish("addToDat", this, {name: "Camera", properties: ["cameraRadius", "theta", "phi"]}); this.subscribe("resize", this.resize); }; diff --git a/src/client/webgl/Renderer.js b/src/client/webgl/Renderer.js index caeb0c5..33ecee1 100644 --- a/src/client/webgl/Renderer.js +++ b/src/client/webgl/Renderer.js @@ -43,6 +43,7 @@ VIZI.Renderer.prototype.render = function() { this.publish("fpsTickStart", "render"); this.renderer.render( this.scene, this.camera ); + this.publish("updateRendererInfo", this.renderer.info); this.publish("fpsTickEnd", "render"); };