Tworzenie bitmapy na podstawie danych z tabeli dwuwymiarowej w ALLEGRO

0

Witam. Mam taki oto problem. Chcę utworzyć bitmapę za pomocą biblioteki Allegro na podstawie danych z tabeli dwuwymiarowej, i owszem bitmapa się tworzy ale jest cała czarna. Kod:

allegro_init();
 
BITMAP *bitmp = create_bitmap( width, height );
PALETTE pal;
get_palette(pal);

if(bitmp)
{
    int i, j;

    for(i=0; i<height; i++){
        for(j=0; j<width; j++){
            if(array2[i][j]==1) putpixel(bitmp, j, i, makecol(0, 0, 0));
            if(array2[i][j]==0) putpixel(bitmp, j, i, makecol(255, 255, 255));
        }
    }

    save_bitmap(name, bitmp, pal);
    destroy_bitmap(bitmp); 
}
 
allegro_exit();

Czy mógłby mi ktoś pomóc?

sformatowanie kodu - furious programming

0

Z API Allegro nie pomogę bo nie znam, jednak pętlę wypełniającą można znacznie przyspieszyć; Ty korzystasz z warunków co jest zbędne, poza tym oba warunki mimo wszystko i tak zostają sprawdzone, dlatego że nie ma else, co znów jest zbędne (jeden element macierzy nie może być 0 i 1 jednocześnie);

if(bitmp)
{
   int y, x, col;

   for(y = 0; y < height; y++){
      for(x = 0; x < width; x++){
         col = array2[y][x] * 255;
         putpixel(bitmp, x, y, makecol(col, col, col));
      }
   }

   // ...
}

Chyba poprawnie składniowo, ale dawno nie pisałem w C;

Problemem może być macierz array2 - może ona faktycznie zawiera same 1-ki zera, dzięki czemu wyjściowa bitmapa jest cała czarna; Sprawdź sobie zawartość tej macierzy przed wypełnianiem bitmapy.

0

O dzięki. Na pewno będzie szybciej. :) Co do tablicy to już to sprawdziłem i wypisuję ją przed utworzeniem bitmapy i nie jest zerowa. Jest może ktoś kto jest obeznany w temacie Allegro i mógłby mi pomóc?

1 użytkowników online, w tym zalogowanych: 0, gości: 1