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