eBbi Temat założony przez niniejszego użytkownika |
[Allegro 5] Problem z funkcja Sprawdzania Pixeli » 2011-01-30 14:54:49 Witam. Mam mały problem w allegro 5 z funkcja sprawdzająca kolor piksela. al_get_pixel ALLEGRO_COLOR al_get_pixel(ALLEGRO_BITMAP *bitmap, int x, int y); jest to dość dziwnie zrobiona funkcja bo odczytuje piksel tylko z bitmap. I tu mam kilka pytań: - co dać w pierwszym argumencie żeby odczytywało piksel z buffora... obrazki tam już są i czekają na wyświetlanie. // próbuje z parametrem 0 ale coś nie wychodzi - z czym porównywać wynik tej funkcji? if(al_get_pixel(0,300,200)==al_map_rgb(255,255,255)) std::cout<<"tak";
przy takiej próbie porównania wyskakuje mi błąd: no match for 'operator==' in 'al_get_pixel(0u, 300, 200) == al_map_rgb(255, 255, 255) candidates are: BOOL operator==(const GUID&, const GUID&)
|
|
McAffey |
» 2011-01-30 15:04:01 Przecież bufor też jest bitmapą, wystarczy al_get_pixel( bufor, x, y ); edit: Jak chcesz pozyskać dokładny kolor w systemie RGB użyj int r = getr( getpixel( bufor, x, y ) ); int g = getg( getpixel( bufor, x, y ) ); int b = getb( getpixel( bufor, x, y ) ); |
|
eBbi Temat założony przez niniejszego użytkownika |
» 2011-01-30 15:11:39 bufor to bitmapa w allegro 4, nie 5 |
|
McAffey |
» 2011-01-30 15:12:38 A to przepraszam, dawno allegro nie używałem i chyba jestem trochę nie na bieżąco ;) |
|
pekfos |
» 2011-01-30 15:13:51 huh, ja uznaję tylko allegro 4.2.2. mniej problemów z tą wersją |
|
DejaVu |
» 2011-01-30 15:32:49 Pierwszy argument to BITMAP* czyli bitmapa. Ty podajesz 0, czyli NULL czyli nie określasz obiektu z którego ma odczytać kolor piksela. |
|
szyx_yankez |
» 2011-01-30 15:44:09 Ja zawsze to tak robiłem:
int r, g, b; ALLEGRO_COLOR color = al_get_pixel( bmp, x, y ); al_unmap_rgb( color,( unsigned char * ) & r,( unsigned char * ) & g,( unsigned char * ) & b ); if( r == 255 && g == 255 && b == 255 ) { }
A jak chcesz żeby Ci to działało 10000x szybciej zrób tak:
ALLEGRO_LOCKED_REGION * lock = al_lock_bitmap( bmp, ALLEGRO_PIXEL_FORMAT_ANY, ALLEGRO_LOCK_READWRITE ); int r, g, b; ALLEGRO_COLOR color = al_get_pixel( bmp, x, y ); al_unmap_rgb( color,( unsigned char * ) & r,( unsigned char * ) & g,( unsigned char * ) & b ); al_unlock_bitmap( bmp ); if( r == 255 && g == 255 && b == 255 ) { }
|
|
eBbi Temat założony przez niniejszego użytkownika |
» 2011-01-30 16:19:23 dobra, ale jak to odczytać z buffora? ty masz w argumencie jakieś bmp |
|
« 1 » 2 |