laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
72 lines (71 loc) • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SubmitTarget = void 0;
const SubmitKey_1 = require("./SubmitKey");
const Stat_1 = require("../../utils/Stat");
const WebGLContext_1 = require("../WebGLContext");
const BlendMode_1 = require("../canvas/BlendMode");
const CONST3D2D_1 = require("../utils/CONST3D2D");
class SubmitTarget {
constructor() {
this.blendType = 0;
this._ref = 1;
this._key = new SubmitKey_1.SubmitKey();
}
renderSubmit() {
var gl = WebGLContext_1.WebGLContext.mainContext;
this._mesh.useMesh(gl);
var target = this.srcRT;
if (target) {
this.shaderValue.texture = target._getSource();
this.shaderValue.upload();
this.blend();
Stat_1.Stat.renderBatches++;
Stat_1.Stat.trianglesFaces += this._numEle / 3;
gl.drawElements(gl.TRIANGLES, this._numEle, gl.UNSIGNED_SHORT, this._startIdx);
}
return 1;
}
blend() {
if (BlendMode_1.BlendMode.activeBlendFunction !== BlendMode_1.BlendMode.fns[this.blendType]) {
var gl = WebGLContext_1.WebGLContext.mainContext;
gl.enable(gl.BLEND);
BlendMode_1.BlendMode.fns[this.blendType](gl);
BlendMode_1.BlendMode.activeBlendFunction = BlendMode_1.BlendMode.fns[this.blendType];
}
}
getRenderType() {
return 0;
}
releaseRender() {
if ((--this._ref) < 1) {
var pool = SubmitTarget.POOL;
pool[pool._length++] = this;
}
}
static create(context, mesh, sv, rt) {
var o = SubmitTarget.POOL._length ? SubmitTarget.POOL[--SubmitTarget.POOL._length] : new SubmitTarget();
o._mesh = mesh;
o.srcRT = rt;
o._startIdx = mesh.indexNum * CONST3D2D_1.CONST3D2D.BYTES_PIDX;
o._ref = 1;
o._key.clear();
o._numEle = 0;
o.blendType = context._nBlendType;
o._key.blendShader = o.blendType;
o.shaderValue = sv;
o.shaderValue.setValue(context._shader2D);
if (context._colorFiler) {
var ft = context._colorFiler;
sv.defines.add(ft.type);
sv.colorMat = ft._mat;
sv.colorAlpha = ft._alpha;
}
return o;
}
}
exports.SubmitTarget = SubmitTarget;
SubmitTarget.POOL = [];
{
SubmitTarget.POOL._length = 0;
}