|
@@ -91,6 +91,48 @@ class WebGLBufferRenderer {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ renderMultiDrawInstances( starts, counts, drawCount, primcount ) {
|
|
|
+
|
|
|
+ const { extensions, mode, object, info } = this;
|
|
|
+
|
|
|
+ if ( drawCount === 0 ) return;
|
|
|
+
|
|
|
+ const extension = extensions.get( 'WEBGL_multi_draw' );
|
|
|
+
|
|
|
+ if ( extension === null ) {
|
|
|
+
|
|
|
+ for ( let i = 0; i < drawCount; i ++ ) {
|
|
|
+
|
|
|
+ this.renderInstances( starts[ i ], counts[ i ], primcount[ i ] );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if ( this.index !== 0 ) {
|
|
|
+
|
|
|
+ extension.multiDrawElementsInstancedWEBGL( mode, counts, 0, this.type, starts, 0, primcount, 0, drawCount );
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ extension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ let elementCount = 0;
|
|
|
+
|
|
|
+ for ( let i = 0; i < drawCount; i ++ ) {
|
|
|
+
|
|
|
+ elementCount += counts[ i ];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ info.update( object, elementCount, mode, primcount );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
//
|
|
|
|
|
|
}
|