提交 1c568ed1 编写于 作者: G gero3

fix an issue wher buffers don't get deleted

上级 c27ad526
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @author mrdoob / http://mrdoob.com/ * @author mrdoob / http://mrdoob.com/
*/ */
THREE.WebGLGeometries = function ( gl, info ) { THREE.WebGLGeometries = function ( gl,properties, info ) {
var geometries = {}; var geometries = {};
...@@ -48,12 +48,12 @@ THREE.WebGLGeometries = function ( gl, info ) { ...@@ -48,12 +48,12 @@ THREE.WebGLGeometries = function ( gl, info ) {
for ( var name in buffergeometry.attributes ) { for ( var name in buffergeometry.attributes ) {
var attribute = buffergeometry.attributes[ name ]; var attribute = buffergeometry.attributes[ name ];
var buffer = getAttributeBuffer(attribute);
if ( attribute.buffer !== undefined ) { if ( buffer !== undefined ) {
gl.deleteBuffer( attribute.buffer ); gl.deleteBuffer( buffer );
removeAttributeBuffer(attribute);
delete attribute.buffer;
} }
...@@ -66,5 +66,30 @@ THREE.WebGLGeometries = function ( gl, info ) { ...@@ -66,5 +66,30 @@ THREE.WebGLGeometries = function ( gl, info ) {
info.memory.geometries --; info.memory.geometries --;
} }
function getAttributeBuffer( attribute ) {
if ( attribute instanceof THREE.InterleavedBufferAttribute ) {
return properties.get( attribute.data ).__webglBuffer;
}
return properties.get( attribute ).__webglBuffer;
};
function removeAttributeBuffer( attribute ) {
if ( attribute instanceof THREE.InterleavedBufferAttribute ) {
properties.delete( attribute.data );
} else {
properties.delete( attribute );
};
};
}; };
...@@ -8,7 +8,7 @@ THREE.WebGLObjects = function ( gl, properties, info ) { ...@@ -8,7 +8,7 @@ THREE.WebGLObjects = function ( gl, properties, info ) {
var morphInfluences = new Float32Array( 8 ); var morphInfluences = new Float32Array( 8 );
var geometries = new THREE.WebGLGeometries( gl, info ); var geometries = new THREE.WebGLGeometries( gl, properties, info );
// //
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册