UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

72 lines (71 loc) 2.59 kB
import { Matrix } from "../../maths/Matrix"; import { Value2D } from "../shader/d2/value/Value2D"; import { CONST3D2D } from "../utils/CONST3D2D"; import { RenderState2D } from "../utils/RenderState2D"; import { SubmitBase } from "./SubmitBase"; export class SubmitCanvas extends SubmitBase { static create(canvas, alpha, filters) { var o = (!SubmitCanvas.POOL._length) ? (new SubmitCanvas()) : SubmitCanvas.POOL[--SubmitCanvas.POOL._length]; o.canv = canvas; o._ref = 1; o._numEle = 0; var v = o.shaderValue; v.alpha = alpha; v.defines.setValue(0); filters && filters.length && v.setFilters(filters); return o; } constructor() { super(SubmitBase.TYPE_2D); this._matrix = new Matrix(); this._matrix4 = CONST3D2D.defaultMatrix4.concat(); this.shaderValue = new Value2D(0, 0); } renderSubmit() { var preAlpha = RenderState2D.worldAlpha; var preMatrix4 = RenderState2D.worldMatrix4; var preMatrix = RenderState2D.worldMatrix; var preFilters = RenderState2D.worldFilters; var preWorldShaderDefines = RenderState2D.worldShaderDefines; var v = this.shaderValue; var m = this._matrix; var m4 = this._matrix4; var mout = Matrix.TEMP; Matrix.mul(m, preMatrix, mout); m4[0] = mout.a; m4[1] = mout.b; m4[4] = mout.c; m4[5] = mout.d; m4[12] = mout.tx; m4[13] = mout.ty; RenderState2D.worldMatrix = mout.clone(); RenderState2D.worldMatrix4 = m4; RenderState2D.worldAlpha = RenderState2D.worldAlpha * v.alpha; if (v.filters && v.filters.length) { RenderState2D.worldFilters = v.filters; RenderState2D.worldShaderDefines = v.defines; } this.canv['flushsubmit'](); RenderState2D.worldAlpha = preAlpha; RenderState2D.worldMatrix4 = preMatrix4; RenderState2D.worldMatrix.destroy(); RenderState2D.worldMatrix = preMatrix; RenderState2D.worldFilters = preFilters; RenderState2D.worldShaderDefines = preWorldShaderDefines; return 1; } releaseRender() { if ((--this._ref) < 1) { var cache = SubmitCanvas.POOL; this._mesh = null; cache[cache._length++] = this; } } getRenderType() { return SubmitBase.TYPE_CANVAS; } } SubmitCanvas.POOL = []; { SubmitCanvas.POOL._length = 0; }