allegro i bmp

0
#include <stdio.h>
#include <allegro5/allegro.h>
#include <conio.h>

void draw_bmp(int x, int y) //zdjęcie zacznie się w pkt-cie x,y
{
    FILE * pFILE;
    pFILE = fopen("earth.bmp","r");
    if (pFILE != NULL)
    {
        for (int i=0; i<54; i++) fgetc(pFILE);  //część pliku, która nie jest mi potrzebna
        for (int i=0; i<100; i++) for (int j=0; j<100; j++) //100x100
        {
            al_draw_pixel(x+j, y+i, al_map_rgb(fgetc(pFILE),fgetc(pFILE),fgetc(pFILE))); //obraz jest odwrócony (na razie)
        }
    }
    fclose(pFILE);
}

int main(int argc, char **argv)
{
    ALLEGRO_DISPLAY *display = NULL; 
    if(!al_init()) {
        fprintf(stderr, "failed to initialize allegro!\n");
        return -1;
    }

    display = al_create_display(100,100);
    draw_bmp(0,0);
    al_flip_display();
    _getch();
    al_destroy_display(display); 
    return 0;
}

Dlaczego funkcja draw_image rysuje tylko część zdjęcia (reszta jest biała), earth.bmp ma rozdzielczość 100x100.

0
for (int i=0; i<100; i++) for (int j=0; j<100; j++)        //100x100
{
al_draw_pixel(x+j, y+i, al_map_rgb(fgetc(pFILE),fgetc(pFILE),fgetc(pFILE))); //obraz jest odwrócony (na razie)
}

ZŁO. ZUO. czytasz po bajcie z pliku i wyświetlasz po pikselku. to będzie trwało z tysiąc razy wolniej niż wczytanie całego bufora z pliku i rzucenie go na ekran.
poza tym Allegro ma jakieś funkcje do obsługi formatu BMP. poszukaj w helpie.

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