WebGLIndexedBufferRenderer.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. function WebGLIndexedBufferRenderer( gl, extensions, info ) {
  5. var mode;
  6. function setMode( value ) {
  7. mode = value;
  8. }
  9. var type, bytesPerElement;
  10. function setIndex( value ) {
  11. type = value.type;
  12. bytesPerElement = value.bytesPerElement;
  13. }
  14. function render( start, count ) {
  15. gl.drawElements( mode, count, type, start * bytesPerElement );
  16. info.update( count, mode );
  17. }
  18. function renderInstances( geometry, start, count ) {
  19. var extension = extensions.get( 'ANGLE_instanced_arrays' );
  20. if ( extension === null ) {
  21. console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );
  22. return;
  23. }
  24. extension.drawElementsInstancedANGLE( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );
  25. info.update( count, mode, geometry.maxInstancedCount );
  26. }
  27. //
  28. this.setMode = setMode;
  29. this.setIndex = setIndex;
  30. this.render = render;
  31. this.renderInstances = renderInstances;
  32. }
  33. export { WebGLIndexedBufferRenderer };