M3D_POLY_3D * get_poly_to_object_3d( int idobj3d, int idpoly3d )
Retorna:
El código del polígono 3D requerido o (0) en caso de no encontrarlo.
Descripción:
Esta función devuelve el polígono de un objeto 3D M3D_POLY_3D, el identificador de dicho polígono ha de ser superior a 1, es decir: Para obtener el primer polígono pasaremos 1, el segundo 2, ...
Ejemplo de utilización de la función:
MAIN_PROGRAM_CDIV PRIVATE int fichero; M3D_POLY_3D * p3d; 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); object3d = add_object_3d( obj3d ); // Establecemos el centro del objeto set_center_object_3d( object3d, 16, 16, 0 ); p3d = get_poly_to_object_3d( object3d, 1 ); if( p3d ) p3d->set_blender_mode( BM_TRANS, 127 ); }else delete( obj3d ); } start_3d(0, fichero, 9, 10000, 10000, 0, this); y = -20; m3d[0].distance.z = 250; // 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(object3d); FRAME; } END_PROGRAM
En el ejemplo vemos como se obtiene un polígono de un objeto 3D con la función get_poly_to_object_3d().
La función unload_object3d() 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.
Ver: object3d - M3D_POLY_3D - create_object_3d() - unload_object3d() - create_bitmap_3d() - create_box_3d()