laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
68 lines (67 loc) • 2.22 kB
JavaScript
import { SubmitKey } from "./SubmitKey";
import { Stat } from "../../utils/Stat";
import { WebGLContext } from "../WebGLContext";
import { BlendMode } from "../canvas/BlendMode";
import { CONST3D2D } from "../utils/CONST3D2D";
export class SubmitTarget {
constructor() {
this.blendType = 0;
this._ref = 1;
this._key = new SubmitKey();
}
renderSubmit() {
var gl = WebGLContext.mainContext;
this._mesh.useMesh(gl);
var target = this.srcRT;
if (target) {
this.shaderValue.texture = target._getSource();
this.shaderValue.upload();
this.blend();
Stat.renderBatches++;
Stat.trianglesFaces += this._numEle / 3;
gl.drawElements(gl.TRIANGLES, this._numEle, gl.UNSIGNED_SHORT, this._startIdx);
}
return 1;
}
blend() {
if (BlendMode.activeBlendFunction !== BlendMode.fns[this.blendType]) {
var gl = WebGLContext.mainContext;
gl.enable(gl.BLEND);
BlendMode.fns[this.blendType](gl);
BlendMode.activeBlendFunction = 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.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;
}
}
SubmitTarget.POOL = [];
{
SubmitTarget.POOL._length = 0;
}