// 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; }
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; }
//------------------------------------------------------------------------------ //! 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 ; }
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); }
// 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; }