|
@@ -7,33 +7,13 @@ THREE.WebGLObjects = function ( gl, info ) {
|
|
|
var objects = {};
|
|
|
var objectsImmediate = [];
|
|
|
|
|
|
- var geometries = {};
|
|
|
+ var geometries = new THREE.WebGLGeometries( gl, info );
|
|
|
|
|
|
var geometryGroups = {};
|
|
|
var geometryGroupCounter = 0;
|
|
|
|
|
|
//
|
|
|
|
|
|
- function initGeometry( object ) {
|
|
|
-
|
|
|
- var geometry = object.geometry;
|
|
|
-
|
|
|
- geometry.addEventListener( 'dispose', onGeometryDispose );
|
|
|
-
|
|
|
- if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
-
|
|
|
- geometries[ geometry.id ] = geometry;
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- geometries[ geometry.id ] = new THREE.BufferGeometry().setFromObject( object );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- info.memory.geometries ++;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
function onObjectRemoved( event ) {
|
|
|
|
|
|
var object = event.target;
|
|
@@ -85,34 +65,6 @@ THREE.WebGLObjects = function ( gl, info ) {
|
|
|
|
|
|
//
|
|
|
|
|
|
- function onGeometryDispose( event ) {
|
|
|
-
|
|
|
- var geometry = event.target;
|
|
|
-
|
|
|
- geometry.removeEventListener( 'dispose', onGeometryDispose );
|
|
|
-
|
|
|
- geometry = geometries[ geometry.id ];
|
|
|
-
|
|
|
- for ( var name in geometry.attributes ) {
|
|
|
-
|
|
|
- var attribute = geometry.attributes[ name ];
|
|
|
-
|
|
|
- if ( attribute.buffer !== undefined ) {
|
|
|
-
|
|
|
- gl.deleteBuffer( attribute.buffer );
|
|
|
-
|
|
|
- delete attribute.buffer;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- info.memory.geometries --;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- //
|
|
|
-
|
|
|
this.objects = objects;
|
|
|
this.objectsImmediate = objectsImmediate;
|
|
|
|
|
@@ -130,18 +82,6 @@ THREE.WebGLObjects = function ( gl, info ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- var geometry = object.geometry;
|
|
|
-
|
|
|
- if ( geometry !== undefined ) {
|
|
|
-
|
|
|
- if ( geometries[ geometry.id ] === undefined ) {
|
|
|
-
|
|
|
- initGeometry( object );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
if ( object.__webglActive === undefined) {
|
|
|
|
|
|
object.__webglActive = true;
|
|
@@ -175,7 +115,7 @@ THREE.WebGLObjects = function ( gl, info ) {
|
|
|
|
|
|
var geometry = geometries.get( object );
|
|
|
|
|
|
- if ( geometry instanceof THREE.DynamicGeometry ) {
|
|
|
+ if ( object.geometry instanceof THREE.DynamicGeometry ) {
|
|
|
|
|
|
geometry.updateFromObject( object );
|
|
|
|