| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /**
- * @author mrdoob / http://mrdoob.com/
- */
- function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
- var isWebGL2 = capabilities.isWebGL2;
- var mode;
- function setMode( value ) {
- mode = value;
- }
- var type, bytesPerElement;
- function setIndex( value ) {
- type = value.type;
- bytesPerElement = value.bytesPerElement;
- }
- function render( start, count ) {
- gl.drawElements( mode, count, type, start * bytesPerElement );
- info.update( count, mode );
- }
- function renderInstances( geometry, start, count, primcount ) {
- if ( primcount === 0 ) return;
- var extension, methodName;
- if ( isWebGL2 ) {
- extension = gl;
- methodName = 'drawElementsInstanced';
- } else {
- extension = extensions.get( 'ANGLE_instanced_arrays' );
- methodName = 'drawElementsInstancedANGLE';
- if ( extension === null ) {
- console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );
- return;
- }
- }
- extension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );
- info.update( count, mode, primcount );
- }
- //
- this.setMode = setMode;
- this.setIndex = setIndex;
- this.render = render;
- this.renderInstances = renderInstances;
- }
- export { WebGLIndexedBufferRenderer };
|