M3D_POLY_3D * create_poly_3d( int nesquinas, M3D_OBJECT_3D * obj3d )


Retorna:

 Un puntero hacia un polígono 3D creado o (0) si no pudo crearlo.

Descripción:

Esta función crea un polígono 3D con 'n' esquinas en un objeto 3D, a través de los métodos de la clase M3D_POLY_3D es posible cambiar todos los aspectos del polígono.

Ejemplo de utilización de la función:


MAIN_PROGRAM_CDIV
PRIVATE
 int fichero;
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");
 
 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 );
  }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))
      stop_3d(0);
     
     FRAME;
 }
 
END_PROGRAM

En el ejemplo vemos como se crea un polígono 3d a partir de un con gráfico con la función create_poly_3d() esta función a su vez añade el polígono al objeto 3D.

Ver también la descripción de la clase M3D_POLY_3D, en la se crean y manipulan polígonos 3D para añadirse al objeto.

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()