提交 d42a72fc 编写于 作者: M Mr.doob

Merge branch 'fixGPUMemory' of https://github.com/gero3/three.js into dev

Conflicts:
	src/renderers/webgl/WebGLGeometries.js
......@@ -2,7 +2,7 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE.WebGLGeometries = function ( gl, info ) {
THREE.WebGLGeometries = function ( gl, properties, info ) {
var geometries = {};
......@@ -43,6 +43,21 @@ THREE.WebGLGeometries = function ( gl, info ) {
function onGeometryDispose( event ) {
var geometry = event.target;
var buffergeometry = geometries[ geometry.id ];
for ( var name in buffergeometry.attributes ) {
var attribute = buffergeometry.attributes[ name ];
var buffer = getAttributeBuffer( attribute );
if ( buffer !== undefined ) {
gl.deleteBuffer( buffer );
removeAttributeBuffer( attribute );
}
}
geometry.removeEventListener( 'dispose', onGeometryDispose );
......@@ -52,4 +67,30 @@ THREE.WebGLGeometries = function ( gl, info ) {
}
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 ) {
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.
先完成此消息的编辑!
想要评论请 注册