46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var Extensions = require('../../../extensions/Extensions.js');
|
|
var State = require('../../renderers/shared/state/State.js');
|
|
|
|
"use strict";
|
|
class GlBatchAdaptor {
|
|
constructor() {
|
|
this._didUpload = false;
|
|
this._tempState = State.State.for2d();
|
|
}
|
|
init(batcherPipe) {
|
|
batcherPipe.renderer.runners.contextChange.add(this);
|
|
}
|
|
contextChange() {
|
|
this._didUpload = false;
|
|
}
|
|
start(batchPipe, geometry, shader) {
|
|
const renderer = batchPipe.renderer;
|
|
renderer.shader.bind(shader, this._didUpload);
|
|
renderer.shader.updateUniformGroup(renderer.globalUniforms.uniformGroup);
|
|
renderer.geometry.bind(geometry, shader.glProgram);
|
|
}
|
|
execute(batchPipe, batch) {
|
|
const renderer = batchPipe.renderer;
|
|
this._didUpload = true;
|
|
this._tempState.blendMode = batch.blendMode;
|
|
renderer.state.set(this._tempState);
|
|
const textures = batch.textures.textures;
|
|
for (let i = 0; i < batch.textures.count; i++) {
|
|
renderer.texture.bind(textures[i], i);
|
|
}
|
|
renderer.geometry.draw("triangle-list", batch.size, batch.start);
|
|
}
|
|
}
|
|
/** @ignore */
|
|
GlBatchAdaptor.extension = {
|
|
type: [
|
|
Extensions.ExtensionType.WebGLPipesAdaptor
|
|
],
|
|
name: "batch"
|
|
};
|
|
|
|
exports.GlBatchAdaptor = GlBatchAdaptor;
|
|
//# sourceMappingURL=GlBatchAdaptor.js.map
|