浏览代码

Merge pull request #14040 from Mugen87/dev4

WebGLUniforms: Added caching for setValueT1a/setValueT6a
Mr.doob 7 年之前
父节点
当前提交
624b961bc7
共有 1 个文件被更改,包括 20 次插入6 次删除
  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 ) {
 
-	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 ) {
 
@@ -551,10 +558,17 @@ function setValueT1a( 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 ) {