MrNyna77 Temat założony przez niniejszego użytkownika |
[Allegro,cpp] Zwiększenie pamięci » 2011-12-17 21:40:45 Witam.
Mam banalne pytanie (przynajmniej tak mi się wydaje:)):
Jak zwiększyć dostępną ilość pamięci?
Po załadowaniu 6 obrazków po jakieś 100kB kończy mi się pamięć :(
Pozdrawiam. |
|
szyx_yankez |
» 2011-12-17 21:48:28 Pewnie coś źle robisz, podaj kod. |
|
MrNyna77 Temat założony przez niniejszego użytkownika |
» 2011-12-18 11:17:43 #include <allegro.h> #include <string> int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 0, 0, 0 ) ); int tab[ 12 ][ 2 ]; int o = 0, poz = 0; for( int y = 0; y <= 320; y += 160 ) { for( int x = 0; x <= 480; x += 160 ) { tab[ o ][ 0 ] = x; tab[ o ][ 1 ] = y; o++; } } BITMAP * rysunek[ 12 ]; BITMAP * bufor = NULL; std::string bmp( ".bmp" ), nazwa; char nr( '1' ); for( int i = 0; i <= 11; i++ ) { nazwa += char( '1' + i ); nazwa += bmp; rysunek[ i ] = load_bmp( nazwa.c_str(), default_palette ); nazwa =( "" ); if( !rysunek[ i ] ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "brak pamieci" ); allegro_exit(); return 0; } } bufor = create_bitmap( 640, 480 ); while( !key[ KEY_ESC ] ) { for( int i = 0; i <= 11; i++ ) draw_sprite( bufor, rysunek[ i ], tab[ i ][ 0 ], tab[ i ][ 1 ] ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } }
Póki co che tylko wyświetlić te obrazki, a efektem końcowym ma być przesuwaniu pomieszanych kwadratów (160px160px) aby powstał obrazek. |
|
SeaMonster131 |
» 2011-12-18 12:01:21 if( !rysunek[ i ] ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "brak pamieci" ); allegro_exit(); return 0; }
To nie znaczy, że nie ma dostępnej pamięci, tylko nie można załadować bitmapy :) |
|
MrNyna77 Temat założony przez niniejszego użytkownika |
» 2011-12-18 13:27:14 Ale pierwsze 6 bitmap mogę wyświetlić... Tylko pozostałe się nie ładują :/ Co może być przyczyną? |
|
pekfos |
» 2011-12-18 13:29:58 nazwa += char( '1' + i ); Wiesz, że dla i >= 9, wynikiem nie będzie liczba? |
|
malan |
» 2011-12-18 13:31:15 int tab[ 12 ][ 2 ]; int o = 0, poz = 0; for( int y = 0; y <= 320; y += 160 ) { for( int x = 0; x <= 480; x += 160 ) { tab[ o ][ 0 ] = x; tab[ o ][ 1 ] = y; o++; } Aha. |
|
MrNyna77 Temat założony przez niniejszego użytkownika |
» 2011-12-18 13:42:27 Pekfos znalazł błąd :) Dzięki będę musiał zmienić nazwy plików (chyba najłatwiej):)
Pozdrawiam. |
|
« 1 » 2 |