From 0986dce98996a7e405d0dc60a792b9af634986b3 Mon Sep 17 00:00:00 2001 From: OpenShift guest Date: Wed, 19 Feb 2014 12:10:58 -0500 Subject: [PATCH] add the stuff for buffergeometry --- src/renderers/WebGLRenderer.js | 37 ++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 34acc87c68..87707a3caf 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -2645,8 +2645,20 @@ THREE.WebGLRenderer = function ( parameters ) { } // render indexed triangles - - _gl.drawElements( _gl.TRIANGLES, offsets[ i ].count, _gl.UNSIGNED_SHORT, offsets[ i ].start * 2 ); // 2 bytes per Uint16 + var type,size; + + if (_glExtensionElementIndexUint && index.array instanceof Uint32Array){ + + type = _gl.UNSIGNED_INT; + size = 4; + + } else { + + type = _gl.UNSIGNED_SHORT; + size = 2; + + } + _gl.drawElements( _gl.TRIANGLES, offsets[ i ].count, type, offsets[ i ].start * size ); // 2 bytes per Uint16 _this.info.render.calls ++; _this.info.render.vertices += offsets[ i ].count; // not really true, here vertices can be shared @@ -2791,8 +2803,21 @@ THREE.WebGLRenderer = function ( parameters ) { } // render indexed lines - - _gl.drawElements( _gl.LINES, offsets[ i ].count, _gl.UNSIGNED_SHORT, offsets[ i ].start * 2 ); // 2 bytes per Uint16Array + var type,size; + + if (_glExtensionElementIndexUint && index.array instanceof Uint32Array){ + + type = _gl.UNSIGNED_INT; + size = 4; + + } else { + + type = _gl.UNSIGNED_SHORT; + size = 2; + + } + + _gl.drawElements( _gl.LINES, offsets[ i ].count, type, offsets[ i ].start * size ); // 2 bytes per Uint16Array _this.info.render.calls ++; _this.info.render.vertices += offsets[ i ].count; // not really true, here vertices can be shared @@ -3004,10 +3029,11 @@ THREE.WebGLRenderer = function ( parameters ) { // wireframe + var type = _glExtensionElementIndexUint ? _gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT; + if ( material.wireframe ) { setLineWidth( material.wireframeLinewidth ); - var type = _glExtensionElementIndexUint ? _gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT; if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglLineBuffer ); _gl.drawElements( _gl.LINES, geometryGroup.__webglLineCount, type, 0 ); @@ -3015,7 +3041,6 @@ THREE.WebGLRenderer = function ( parameters ) { } else { - var type = _glExtensionElementIndexUint ? _gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT; if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglFaceBuffer ); _gl.drawElements( _gl.TRIANGLES, geometryGroup.__webglFaceCount, type, 0 ); -- GitLab