Reference Source

src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js

  1. import {VBORenderer} from "./../../../VBORenderer.js";
  2.  
  3. /**
  4. * @private
  5. */
  6. export class TrianglesInstancingRenderer extends VBORenderer {
  7. constructor(scene, withSAO, {edges = false, useAlphaCutoff = false} = {}) {
  8. super(scene, withSAO, {instancing: true, edges, useAlphaCutoff});
  9. }
  10.  
  11. _draw(drawCfg) {
  12. const {gl} = this._scene.canvas;
  13.  
  14. const {
  15. state,
  16. frameCtx,
  17. incrementDrawState
  18. } = drawCfg;
  19.  
  20. if (this._edges) {
  21. if (state.edgeIndicesBuf) {
  22. gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);
  23. }
  24. } else {
  25. gl.drawElementsInstanced(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);
  26.  
  27. if (incrementDrawState) {
  28. frameCtx.drawElements++;
  29. }
  30. }
  31. }
  32. }