var CanvasPool = require('../../display/canvas/CanvasPool'); var Class = require('../../utils/Class'); var Components = require('../components'); var CONST = require('../../const'); var GameObject = require('../GameObject'); var Render = require('./RenderTextureRender'); var RenderTextureCanvas = require('./RenderTextureCanvas'); var RenderTextureWebGL = require('./RenderTextureWebGL'); var RenderTexture = new Class({ Extends: GameObject, Mixins: [Components.Alpha, Components.BlendMode, Components.ComputedSize, Components.Depth, Components.Flip, Components.GetBounds, Components.MatrixStack, Components.Origin, Components.Pipeline, Components.ScaleMode, Components.ScrollFactor, Components.Tint, Components.Transform, Components.Visible, Render] , initialize: function RenderTexture(scene, x, y, width, height){ if (width === undefined) { width = 32; } if (height === undefined) { height = 32; } GameObject.call(this, scene, 'RenderTexture'); this.initMatrixStack(); this.renderer = scene.sys.game.renderer; this.globalTint = 16777215; this.globalAlpha = 1; if (this.renderer.type === CONST.WEBGL) { var gl = this.renderer.gl; this.gl = gl; this.fill = RenderTextureWebGL.fill; this.clear = RenderTextureWebGL.clear; this.draw = RenderTextureWebGL.draw; this.drawFrame = RenderTextureWebGL.drawFrame; this.texture = this.renderer.createTexture2D(0, gl.NEAREST, gl.NEAREST, gl.CLAMP_TO_EDGE, gl.CLAMP_TO_EDGE, gl.RGBA, null , width, height, false ); this.framebuffer = this.renderer.createFramebuffer(width, height, this.texture, false ); } else if (this.renderer.type === CONST.CANVAS) { this.fill = RenderTextureCanvas.fill; this.clear = RenderTextureCanvas.clear; this.draw = RenderTextureCanvas.draw; this.drawFrame = RenderTextureCanvas.drawFrame; this.canvas = CanvasPool.create2D(null , width, height); this.context = this.canvas.getContext('2d'); } this.setPosition(x, y); this.setSize(width, height); this.initPipeline('TextureTintPipeline'); } , destroy: function (){ GameObject.prototype.destroy.call(this); if (this.renderer.type === CONST.WEBGL) { this.renderer.deleteTexture(this.texture); this.renderer.deleteFramebuffer(this.framebuffer); } } , setGlobalTint: function (tint){ this.globalTint = tint; return this; } , setGlobalAlpha: function (alpha){ this.globalAlpha = alpha; return this; } } ); module.exports = RenderTexture;