Browse Source

WebGLUniforms: Added caching for setValueT1a/setValueT6a

Mugen87 7 năm trước cách đây
mục cha
commit
91f702bbda
1 tập tin đã thay đổi với 20 bổ sung6 xóa
  1. 20 6
      src/renderers/webgl/WebGLUniforms.js

+ 20 - 6
src/renderers/webgl/WebGLUniforms.js

@@ -536,10 +536,17 @@ function setValueM4a( gl, v ) {
 
 
 function setValueT1a( gl, v, renderer ) {
 function setValueT1a( gl, v, renderer ) {
 
 
-	var n = v.length,
-		units = allocTexUnits( renderer, n );
+	var cache = this.cache;
+	var n = v.length;
+
+	var units = allocTexUnits( renderer, n );
+
+	if ( arraysEqual( cache, units ) === false ) {
 
 
-	gl.uniform1iv( this.addr, units );
+		gl.uniform1iv( this.addr, units );
+		copyArray( cache, units );
+
+	}
 
 
 	for ( var i = 0; i !== n; ++ i ) {
 	for ( var i = 0; i !== n; ++ i ) {
 
 
@@ -551,10 +558,17 @@ function setValueT1a( gl, v, renderer ) {
 
 
 function setValueT6a( gl, v, renderer ) {
 function setValueT6a( gl, v, renderer ) {
 
 
-	var n = v.length,
-		units = allocTexUnits( renderer, n );
+	var cache = this.cache;
+	var n = v.length;
+
+	var units = allocTexUnits( renderer, n );
+
+	if ( arraysEqual( cache, units ) === false ) {
 
 
-	gl.uniform1iv( this.addr, units );
+		gl.uniform1iv( this.addr, units );
+		copyArray( cache, units );
+
+	}
 
 
 	for ( var i = 0; i !== n; ++ i ) {
 	for ( var i = 0; i !== n; ++ i ) {