/* * File: Renderable.js * * Encapsulate the Shader and VertexBuffer into the same object (and will include * other attributes later) to represent a Renderable object on the game screen. */ /*jslint node: true, vars: true */ /*global gEngine: false, Transform: false */ /* find out more about jslint: http://www.jslint.com/help.html */ // Constructor and object definition "use strict"; // Operate in Strict mode such that variables must be declared before used! function Renderable() { this.mShader = gEngine.DefaultResources.getConstColorShader(); // this is the default this.mXform = new Transform(); // transform that moves this object around this.mColor = [1, 1, 1, 1]; // color of pixel } // //**----------------------------------------- // Public methods //**----------------------------------------- Renderable.prototype.draw = function (aCamera) { var gl = gEngine.Core.getGL(); this.mShader.activateShader(this.mColor, aCamera); // always activate the shader first! this.mShader.loadObjectTransform(this.mXform.getXform()); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); }; Renderable.prototype.update = function () {}; Renderable.prototype.getXform = function () { return this.mXform; }; Renderable.prototype.setColor = function (color) { this.mColor = color; }; Renderable.prototype.getColor = function () { return this.mColor; }; //--- end of Public Methods // Renderable.prototype.swapShader = function (s) { var out = this.mShader; this.mShader = s; return out; }; Renderable.prototype._setShader = function (s) { this.mShader = s; };