40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
var Extensions = require('../../../extensions/Extensions.js');
|
|
|
|
"use strict";
|
|
class GlEncoderSystem {
|
|
constructor(renderer) {
|
|
this.commandFinished = Promise.resolve();
|
|
this._renderer = renderer;
|
|
}
|
|
setGeometry(geometry, shader) {
|
|
this._renderer.geometry.bind(geometry, shader.glProgram);
|
|
}
|
|
finishRenderPass() {
|
|
}
|
|
draw(options) {
|
|
const renderer = this._renderer;
|
|
const { geometry, shader, state, skipSync, topology: type, size, start, instanceCount } = options;
|
|
renderer.shader.bind(shader, skipSync);
|
|
renderer.geometry.bind(geometry, renderer.shader._activeProgram);
|
|
if (state) {
|
|
renderer.state.set(state);
|
|
}
|
|
renderer.geometry.draw(type, size, start, instanceCount ?? geometry.instanceCount);
|
|
}
|
|
destroy() {
|
|
this._renderer = null;
|
|
}
|
|
}
|
|
/** @ignore */
|
|
GlEncoderSystem.extension = {
|
|
type: [
|
|
Extensions.ExtensionType.WebGLSystem
|
|
],
|
|
name: "encoder"
|
|
};
|
|
|
|
exports.GlEncoderSystem = GlEncoderSystem;
|
|
//# sourceMappingURL=GlEncoderSystem.js.map
|