瀏覽代碼

WebGLRenderer3: Using geometry id + material id as hash.

Mr.doob 12 年之前
父節點
當前提交
cd209ca540
共有 1 個文件被更改,包括 7 次插入5 次删除
  1. 7 5
      examples/js/renderers/WebGLRenderer3.js

+ 7 - 5
examples/js/renderers/WebGLRenderer3.js

@@ -91,11 +91,13 @@ THREE.WebGLRenderer3 = function ( parameters ) {
 
 	var buffers = {};
 
-	var getBuffer = function ( geometry ) {
+	var getBuffer = function ( geometry, material ) {
 
-		if ( buffers[ geometry.id ] !== undefined ) {
+		var hash = geometry.id.toString() + material.id.toString();
 
-			return buffers[ geometry.id ];
+		if ( buffers[ hash ] !== undefined ) {
+
+			return buffers[ hash ];
 
 		}
 
@@ -177,7 +179,7 @@ THREE.WebGLRenderer3 = function ( parameters ) {
 		gl.bindBuffer( gl.ARRAY_BUFFER, buffer.normals );
 		gl.bufferData( gl.ARRAY_BUFFER, new Float32Array( normals ), gl.STATIC_DRAW );
 
-		buffers[ geometry.id ] = buffer;
+		buffers[ hash ] = buffer;
 
 		scope.info.memory.geometries ++;
 
@@ -493,7 +495,7 @@ THREE.WebGLRenderer3 = function ( parameters ) {
 
 	var renderObject = function ( object, camera ) {
 
-		var buffer = getBuffer( object.geometry );
+		var buffer = getBuffer( object.geometry, object.material );
 
 		var material = object.material;