Browse Source

Centralize bind buffer

Ben Adams 9 years ago
parent
commit
cd4982a351
1 changed files with 12 additions and 14 deletions
  1. 12 14
      src/babylon.engine.ts

+ 12 - 14
src/babylon.engine.ts

@@ -987,9 +987,17 @@
         }
 
         public bindArrayBuffer(buffer: WebGLBuffer): void {
-            if (this._currentBoundBuffer[this._gl.ARRAY_BUFFER] !== buffer) {
-                this._gl.bindBuffer(this._gl.ARRAY_BUFFER, buffer);
-                this._currentBoundBuffer[this._gl.ARRAY_BUFFER] = buffer;
+            this.bindBuffer(buffer, this._gl.ARRAY_BUFFER);
+        }
+
+        private bindIndexBuffer(buffer: WebGLBuffer): void {
+            this.bindBuffer(buffer, this._gl.ELEMENT_ARRAY_BUFFER);
+        }
+
+        private bindBuffer(buffer: WebGLBuffer, target: number): void {
+            if (this._currentBoundBuffer[target] !== buffer) {
+                this._gl.bindBuffer(target, buffer);
+                this._currentBoundBuffer[target] = buffer;
             }
         }
 
@@ -1014,21 +1022,11 @@
             }
 
             if (changed) {
-                if (this._currentBoundBuffer[this._gl.ARRAY_BUFFER] !== buffer) {
-                    this._gl.bindBuffer(this._gl.ARRAY_BUFFER, buffer);
-                    this._currentBoundBuffer[this._gl.ARRAY_BUFFER] = buffer;
-                }
+                this.bindArrayBuffer(buffer);
                 this._gl.vertexAttribPointer(indx, size, type, normalized, stride, offset);
             }
         }
 
-        private bindIndexBuffer(buffer: WebGLBuffer): void {
-            if (this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER] !== buffer) {
-                this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER, buffer);
-                this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER] = buffer;
-            }
-        }
-
         public bindBuffersDirectly(vertexBuffer: WebGLBuffer, indexBuffer: WebGLBuffer, vertexDeclaration: number[], vertexStrideSize: number, effect: Effect): void {
             if (this._cachedVertexBuffers !== vertexBuffer || this._cachedEffectForVertexBuffers !== effect) {
                 this._cachedVertexBuffers = vertexBuffer;