Example #1
0
// Set images from file
void tile_type::setImages( std::string path1, std::string path2){
  // Load image 1
  if( path1 != "NULL"){
    image[0] = load_bitmap( path1.c_str(), NULL);
    image_reference_number[0] = allegro_gl_make_texture_ex( AGL_TEXTURE_HAS_ALPHA | AGL_TEXTURE_FLIP, image[0], GL_RGBA);
    texture_reference[type] = image_reference_number[0];
  }

  // Load image 2
  if( path2 != "NULL"){
    image[1] = load_bitmap( path2.c_str(), NULL);
    image_reference_number[1] = allegro_gl_make_texture_ex( AGL_TEXTURE_HAS_ALPHA | AGL_TEXTURE_FLIP, image[1], GL_RGBA);
  }
  else{
    image_reference_number[1] = image_reference_number[0];
  }

  // No blurry textures!
  glBindTexture(GL_TEXTURE_2D, image_reference_number[0]);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

  glBindTexture(GL_TEXTURE_2D, image_reference_number[1]);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}
GLuint _gk_load_texture( const GLYPH_GL_PIXELTYPE *pixeldata, int w, int h )
{
   GLuint textureId;
   
#if (GLYPH_TARGET == GLYPH_TARGET_ALLEGGL)

   BITMAP *temp;
   int i;
   
   /* Unfortunately, we currenly need to make a copy of the pixel data */
   
   temp = create_bitmap_ex( 8, w, h );
   
   for( i = 0; i < w*h; i++ )
      putpixel( temp, i%w, i/w, pixeldata[i] );
   
   allegro_gl_use_alpha_channel( TRUE );
   allegro_gl_use_mipmapping(FALSE);
   allegro_gl_set_texture_format( GL_ALPHA8 );
   
   textureId = allegro_gl_make_texture_ex( AGL_TEXTURE_ALPHA_ONLY, temp, GL_ALPHA8 );
   
   destroy_bitmap( temp );

#else

   glGenTextures( 1, &textureId );
   glBindTexture( GL_TEXTURE_2D, textureId );
   glTexImage2D( GL_TEXTURE_2D, 0, 1, w, h, 0, GL_ALPHA8, GL_UNSIGNED_BYTE, pixeldata );
   
#endif
   
   return textureId;
}
Example #3
0
GLuint make_texture(char *path, int flags)
{
 BITMAP *texture = load_bitmap(path, NULL);

 if(!texture)
  {
   allegro_message("Failed loading texture '%s'.", path);
   exit(1);
  }

 int id = allegro_gl_make_texture_ex(flags, texture, GL_RGBA8);
 destroy_bitmap(texture);
 return id;
}
Example #4
0
//------------------------------------------------------------------------------
//! Crea una nueva Imagen a partir de un fichero de imagen. Se debe comprobar si
//! ha sido posible crear la imagen llamando al metodo ErrorEnCreacion()
//------------------------------------------------------------------------------
Imagen::Imagen(string nombreFichero)
{
    bitmap = CargarBitmap(nombreFichero);
    masked = false ;
    
    // Creamos la textura
    textura = allegro_gl_make_texture_ex(AGL_TEXTURE_MIPMAP | AGL_TEXTURE_MASKED | AGL_TEXTURE_FLIP | AGL_TEXTURE_RESCALE, bitmap, -1);
    
    w = bitmap->w ;
    h = bitmap->h ;    
    
    destroy_bitmap(bitmap);
    bitmap = NULL ;    
}
Example #5
0
Puerta::Puerta(Nivel *nivel, int cod, Vector centroCelda, Vector radioCelda, int orien):
    Item(nivel, cod)
{
    float rad = 0.3 ;
    estado = Cerrada ;
    
    posicion = centroCelda ;
    switch (orien)
    {
        case Orientacion::Norte:
            posicion.SetZ( posicion.GetZ() - radioCelda.GetZ() + rad ) ;
            posicion.SetY( posicion.GetY() + 0.8*radioCelda.GetY() );
            radio = Vector( radioCelda.GetX(), 0.8*radioCelda.GetY(), rad);
            break ;
        case Orientacion::Este:
            posicion.SetX( posicion.GetX() + radioCelda.GetX() - rad ) ;
            posicion.SetY( posicion.GetY() + 0.8*radioCelda.GetY() );
            radio = Vector( rad, 0.8*radioCelda.GetY(), radioCelda.GetZ());
            break ;
        case Orientacion::Sur:
            posicion.SetZ( posicion.GetZ() + radioCelda.GetZ() - rad ) ;
            posicion.SetY( posicion.GetY() + 0.8*radioCelda.GetY() );
            radio = Vector( radioCelda.GetX(), 0.8*radioCelda.GetY(), rad);
            break ;
        case Orientacion::Oeste:
            posicion.SetX( posicion.GetX() - radioCelda.GetX() + rad ) ;
            posicion.SetY( posicion.GetY() + 0.8*radioCelda.GetY() );
            radio = Vector( rad, 0.8*radioCelda.GetY(), radioCelda.GetZ());
            break ;
            
    }
    posicionCerrada = posicion ;
    posicionAbierta = posicionCerrada - Vector(0, 1.6*radioCelda.GetY(), 0) ;
    obstaculo = true ;
    orientacion = orien;
    
    
    BITMAP * bitmap = load_bitmap("Texturas\\puerta.bmp", NULL);
    
    if (!bitmap)
    {
        throw Excepcion("No se puedo cargar la textura puerta.bmp");
    }
    
    // Creamos la textura
    glTexPuerta = allegro_gl_make_texture_ex(AGL_TEXTURE_MIPMAP | AGL_TEXTURE_MASKED | AGL_TEXTURE_FLIP | AGL_TEXTURE_RESCALE, bitmap, -1);

}
Example #6
0
// Load model
bool model::load( const char * path, const char * uv_path){
  if( model_loader::load_model( path, vertices, uvs, normals)){
    //vertices
    glGenBuffers(1, &vertexbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
    glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);

    //uvs
    glGenBuffers(1, &texturebuffer);
    glBindBuffer(GL_ARRAY_BUFFER, texturebuffer);
    glBufferData(GL_ARRAY_BUFFER, uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);

    //normals
    glGenBuffers(1, &normalbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, normalbuffer);
    glBufferData(GL_ARRAY_BUFFER, normals.size() * sizeof(glm::vec3), &normals[0], GL_STATIC_DRAW);


    // Image
    // Load image
    if( uv_path != "NULL"){
      BITMAP *image;
      if( !(image = load_bitmap( uv_path, NULL))){
        abort_on_error( "Could not load image");
      }
      texture_id = allegro_gl_make_texture_ex( AGL_TEXTURE_HAS_ALPHA | AGL_TEXTURE_FLIP, image, GL_RGBA);
    }

    // No blurry textures!
    glBindTexture(GL_TEXTURE_2D, texture_id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    return true;
  }
  return false;
}