void unload_object_3d( int idobj3d )
Descripción:
Esta función permiten liberar la memoria del ordenador utilizada por el objeto 3D cuando ya no se va a utilizar más durante un tiempo, y para ello requieren también el código del objeto 3D, para saber qué objeto es el que se quiere destruir.
No es necesario descargar el objeto 3D de memoria antes de finalizar el programa, ya que el sistema lo hará de forma automática.
Ejemplo de utilización de la función:
MAIN_PROGRAM_CDIV
PRIVATE
int fichero, objeto3d;
BEGIN_PROGRAM
set_depth(16);
set_gfx(GFX_AUTODETECT_WINDOWED);
set_mode( 640, 480 );
write(0,0, 0,0, "Pulse 'up' o 'down' para avanzar o retroceder");
write(0,0,10,0, "Pulse 'left' o 'right' gira la camara izquierda o derecha");
write(0,0,20,0, "Pulse 'enter' para eliminar el objeto");
fichero = load_fpg("../help.fpg");
M3D_OBJECT_3D * obj3d = create_object_3d();
if( obj3d )
{
M3D_POLY_3D * poly3d = create_poly_3d( 4, obj3d );
if( poly3d )
{
poly3d->set_corner( 0, 0, 0, 0);
poly3d->set_corner( 1, 32, 0, 0);
poly3d->set_corner( 2, 32, 32, 0);
poly3d->set_corner( 3, 0, 32, 0);
poly3d->set_texture( fichero, 100, M3D_TX_ZOOM, M3D_TX_XY, 0 );
poly3d->set_render_type(POLYTYPE_PTEX_MASK);
objeto3d = add_object_3d( obj3d );
object3d = objeto3d;
// Establecemos el centro del objeto
set_center_object_3d( object3d, 16, 16, 0 );
}else
delete( obj3d );
}
start_3d(0, fichero, 9, 10000, 10000, 0, this);
y = -20;
m3d[0].distance.z = 500;
// Nos movemos en el espacio 3D
LOOP{
if( key(_left) )
angle3d.y += 5000;
if( key(_right))
angle3d.y -= 5000;
if( key(_up))
advance3d(5);
if( key(_down))
advance3d(-5);
if( key(_enter))
unload_object_3d(objeto3d);
FRAME;
}
END_PROGRAM
En el ejemplo vemos como se descarga de memoria un objeto 3D al pulsar la tecla ENTER con la función unload_object_3d().
Ver: object3d - M3D_POLY_3D - create_object_3d() - create_box_3d() - create_bitmap_3d()