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

WebGLObjects: Refactored geometry initialisation code.

上级 8efea7f7
......@@ -14,6 +14,26 @@ THREE.WebGLObjects = function ( gl, info ) {
//
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;
......@@ -71,11 +91,7 @@ THREE.WebGLObjects = function ( gl, info ) {
geometry.removeEventListener( 'dispose', onGeometryDispose );
deallocateGeometry( geometries[ geometry.id ] );
}
function deallocateGeometry( geometry ) {
geometry = geometries[ geometry.id ];
for ( var name in geometry.attributes ) {
......@@ -116,25 +132,9 @@ THREE.WebGLObjects = function ( gl, info ) {
var geometry = object.geometry;
if ( geometry === undefined ) {
// ImmediateRenderObject
} else if ( geometries[ geometry.id ] === undefined ) {
geometry.addEventListener( 'dispose', onGeometryDispose );
if ( geometry instanceof THREE.BufferGeometry ) {
if ( geometry !== undefined ) {
geometries[ geometry.id ] = geometry;
info.memory.geometries ++;
} else {
geometries[ geometry.id ] = new THREE.BufferGeometry().setFromObject( object );
info.memory.geometries ++;
}
initGeometry( object );
}
......@@ -171,14 +171,15 @@ THREE.WebGLObjects = function ( gl, info ) {
var geometry = object.geometry;
if ( object.geometry instanceof THREE.Geometry ) {
if ( geometry instanceof THREE.Geometry ) {
geometry = geometries[ geometry.id ];
if ( geometry === undefined ) {
geometry = new THREE.BufferGeometry().setFromObject( object );
geometries[ geometry.id ] = geometry;
initGeometry( object );
geometry = geometries[ geometry.id ];
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册