Render Texture now uses unified drawing functions

This commit is contained in:
Richard Davey 2018-08-03 19:17:39 +01:00
parent c6cb0edf60
commit d5c558b8e4
2 changed files with 10 additions and 64 deletions

View file

@ -14,71 +14,14 @@
* @private
*
* @param {Phaser.Renderer.Canvas.CanvasRenderer} renderer - A reference to the current active Canvas renderer.
* @param {Phaser.GameObjects.RenderTexture} renderTexture - The Game Object being rendered in this call.
* @param {Phaser.GameObjects.RenderTexture} src - The Game Object being rendered in this call.
* @param {number} interpolationPercentage - Reserved for future use and custom pipelines.
* @param {Phaser.Cameras.Scene2D.Camera} camera - The Camera that is rendering the Game Object.
* @param {Phaser.GameObjects.Components.TransformMatrix} parentMatrix - This transform matrix is defined if the game object is nested
*/
var RenderTextureCanvasRenderer = function (renderer, renderTexture, interpolationPercentage, camera, parentMatrix)
var RenderTextureCanvasRenderer = function (renderer, src, interpolationPercentage, camera, parentMatrix)
{
var ctx = renderer.currentContext;
// Alpha
var alpha = camera.alpha * renderTexture.alpha;
if (alpha === 0)
{
// Nothing to see, so abort early
return;
}
var dx = 0;
var dy = 0;
var fx = 1;
var fy = 1;
if (renderTexture.flipX)
{
fx = -1;
dx -= renderTexture.canvas.width - renderTexture.displayOriginX;
}
else
{
dx -= renderTexture.displayOriginX;
}
if (renderTexture.flipY)
{
fy = -1;
dy -= renderTexture.canvas.height - renderTexture.displayOriginY;
}
else
{
dy -= renderTexture.displayOriginY;
}
ctx.save();
// Blend Mode
ctx.globalCompositeOperation = renderer.blendModes[renderTexture.blendMode];
// Alpha
ctx.globalAlpha = alpha;
if (parentMatrix)
{
parentMatrix.copyToContext(ctx);
}
ctx.translate(renderTexture.x - camera.scrollX * renderTexture.scrollFactorX, renderTexture.y - camera.scrollY * renderTexture.scrollFactorY);
ctx.rotate(renderTexture.rotation);
ctx.scale(renderTexture.scaleX, renderTexture.scaleY);
ctx.scale(fx, fy);
ctx.drawImage(renderTexture.canvas, dx, dy);
ctx.restore();
renderer.batchSprite(src, src.frame, camera, parentMatrix);
};
module.exports = RenderTextureCanvasRenderer;

View file

@ -23,20 +23,23 @@ var Utils = require('../../renderer/webgl/Utils');
*/
var RenderTextureWebGLRenderer = function (renderer, src, interpolationPercentage, camera, parentMatrix)
{
var frame = src.frame;
var width = frame.width;
var height = frame.height;
var getTint = Utils.getTintAppendFloatAlpha;
this.pipeline.batchTexture(
src,
src.texture,
src.texture.width, src.texture.height,
frame.glTexture,
width, height,
src.x, src.y,
src.width, src.height,
width, height,
src.scaleX, src.scaleY,
src.rotation,
src.flipX, !src.flipY,
src.scrollFactorX, src.scrollFactorY,
src.displayOriginX, src.displayOriginY,
0, 0, src.texture.width, src.texture.height,
0, 0, width, height,
getTint(src._tintTL, camera.alpha * src._alphaTL),
getTint(src._tintTR, camera.alpha * src._alphaTR),
getTint(src._tintBL, camera.alpha * src._alphaBL),