浏览代码

WebGLRenderer: Move more code to WebGLBuffers.

Mr.doob 10 年之前
父节点
当前提交
a4f4a56b0e
共有 2 个文件被更改,包括 16 次插入20 次删除
  1. 3 18
      src/renderers/WebGLRenderer.js
  2. 13 2
      src/renderers/webgl/WebGLBuffers.js

+ 3 - 18
src/renderers/WebGLRenderer.js

@@ -2229,26 +2229,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			} else if ( object instanceof THREE.Line ) {
 
-				if ( geometry.__webglVertexBuffer === undefined ) {
-
-					buffers.initLineBuffers( geometry, object );
-
-					geometry.verticesNeedUpdate = true;
-					geometry.colorsNeedUpdate = true;
-					geometry.lineDistancesNeedUpdate = true;
-
-				}
+				buffers.initLineBuffers( geometry, object );
 
 			} else if ( object instanceof THREE.PointCloud ) {
 
-				if ( geometry.__webglVertexBuffer === undefined ) {
-
-					buffers.initParticleBuffers( geometry, object );
-
-					geometry.verticesNeedUpdate = true;
-					geometry.colorsNeedUpdate = true;
-
-				}
+				buffers.initPointCloudBuffers( geometry, object );
 
 			}
 
@@ -2570,7 +2555,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || customAttributesDirty ) {
 
-				buffers.setParticleBuffers( geometry, _gl.DYNAMIC_DRAW, object );
+				buffers.setPointCloudBuffers( geometry, _gl.DYNAMIC_DRAW, object );
 
 			}
 

+ 13 - 2
src/renderers/webgl/WebGLBuffers.js

@@ -53,7 +53,9 @@ THREE.WebGLBuffers = function ( gl, info, extensions, getBufferMaterial ) {
 
 	};
 
-	this.initParticleBuffers = function ( geometry, object ) {
+	this.initPointCloudBuffers = function ( geometry, object ) {
+
+		if ( geometry.__webglVertexBuffer !== undefined ) return;
 
 		geometry.__webglVertexBuffer = gl.createBuffer();
 		geometry.__webglColorBuffer = gl.createBuffer();
@@ -71,10 +73,15 @@ THREE.WebGLBuffers = function ( gl, info, extensions, getBufferMaterial ) {
 
 		initCustomAttributes( object );
 
+		geometry.verticesNeedUpdate = true;
+		geometry.colorsNeedUpdate = true;
+
 	};
 
 	this.initLineBuffers = function ( geometry, object ) {
 
+		if ( geometry.__webglVertexBuffer !== undefined ) return;
+
 		geometry.__webglVertexBuffer = gl.createBuffer();
 		geometry.__webglColorBuffer = gl.createBuffer();
 		geometry.__webglLineDistanceBuffer = gl.createBuffer();
@@ -93,6 +100,10 @@ THREE.WebGLBuffers = function ( gl, info, extensions, getBufferMaterial ) {
 
 		initCustomAttributes( object );
 
+		geometry.verticesNeedUpdate = true;
+		geometry.colorsNeedUpdate = true;
+		geometry.lineDistancesNeedUpdate = true;
+
 	};
 
 	this.initMeshBuffers = function ( geometryGroup, object ) {
@@ -269,7 +280,7 @@ THREE.WebGLBuffers = function ( gl, info, extensions, getBufferMaterial ) {
 
 	// Buffer setting
 
-	this.setParticleBuffers = function ( geometry, hint, object ) {
+	this.setPointCloudBuffers = function ( geometry, hint, object ) {
 
 		var v, c, vertex, offset, color,