golasek1992 Temat założony przez niniejszego użytkownika |
podwojne buforowanie pomocy ! » 2009-11-28 08:01:26 #include <allegro.h> #include <ctime>
void init(); int main() { float x = 100, y = 100, kx = 0.2, ky = 0.3, x1, y1, v = 2; allegro_init(); install_timer(); install_mouse(); install_keyboard(); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); BITMAP * bufor = NULL; BITMAP * bmp = NULL; bufor = create_bitmap( 800, 600 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } while( !key[ KEY_ESC ] ) { srand(( time( NULL ) ) ); circle( bmp, x, y, 40, makecol( 255, 20, 128 ) ); if( x >= 760 ) { kx =- kx; kx =-( rand() % 9 + 0.3 ) / 10; v =( rand() % 13 + 0.5 ) / 10; } if( x <= 40 ) { kx =- kx; kx =( rand() % 9 + 0.3 ) / 10; v =( rand() % 13 + 0.5 ) / 10; } if( y >= 560 ) { ky =- ky; ky =-( rand() % 10 + 0.2 ) / 10; v =( rand() % 13 + 0.5 ) / 10; } if( y <= 40 ) { ky =- ky; ky =( rand() % 10 + 0.2 ) / 10; v =( rand() % 13 + 0.5 ) / 10; } x1 = x + kx * v; y1 = y + ky * v; x = x1; y = y1; clear_to_color( bufor, makecol( 0, 0, 0 ) ); masked_blit( bmp, bufor, 0, 0, x, y, x->w, y->h ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN(); Ten kodzik odbija kólke od scian ekranu ktora przy kazdym odbiciu zmienia swoją szybkość i kat nachylenia. Wszystko byloby fajnie tylko ze ekran miga jak mozna sie domyslec z tematu. Według kursu ktory czytalem na tej stronie potrafie zrobic podwojne buforowanie jezeli mam obrazek dolaczony z ,,zewnatrz" ale jezeli maluje cos w allegro to nie wiem jak wymalowac to na bitmapie i co napisac zeby ladowalo ta bitmape na ekran. Bardzo proszę o pomoc. Najlepiej prosze o gotowe fragmenty i jeżeli można to z małym wytłumaczeniem - dlaczego. |
|
DejaVu |
» 2009-11-28 09:05:15 Nic nie może mrugać, bo kod się nie kompiluje. masked_blit( bmp, bufor, 0, 0, x, y, bmp->w, bmp->h );
|
|
golasek1992 Temat założony przez niniejszego użytkownika |
podwojne buforowanie » 2009-11-28 10:29:41 circle( screen, x, y, 40, makecol( 255, 20, 128 ) );
clear_bitmap( screen );
zapisujac tak miga... a mi chodzi o to zeby wykorzystac podwojne buforowanie i zeby mi ktos pomosgl jak to napsiac a to ze sie nie kompiluje to akurat wiem... to byla proba ktora mi nie wyszla i chcialem zeby ktos mnie skorygowal. takich postow typu to nie dziala mi nie potrzeba ... |
|
Proxym |
» 2009-11-28 10:37:00 Rysuj kółko na "bufor" nie na "screen", a potem bufor na końcu ładujesz, zaznaczam, że liballegro nigdy nie tykałem. |
|
golasek1992 Temat założony przez niniejszego użytkownika |
podwojne buforowanie » 2009-11-28 11:08:32 Tak ja pisales narysowalem kolko na buforze:
circle(bufor, x, y, 40, makecol(255,20,128)); - mam nadzieje ze tak ;p clear_to_color(bufor, makecol(0,0,0));
Tylko nie wiem co z tymi funkcjami ( jak ma wygladac masked_blit?)
masked_blit( circle, bufor 0,0, x, y, x->w, y->h); blit( bufor, screen, 0,0,0,0, 800,600);
jak narysowalem tak: circle(bufor, x, y, 40, makecol(255,20,128)); clear_to_color(bufor, makecol(0,0,0)); //masked_blit( circle, bufor 0,0, x, y, x->w, y->h); blit( bufor, screen, 0,0,0,0, 800,600);
To byl czarny ekran i ani sladu kulki :{ napisz jak mzoesz jak maja wygladac te funkcje |
|
DejaVu |
» 2009-11-28 11:29:17 Nic dziwnego, jeśli najpierw rysujesz kulkę na buforze, a potem czyścisz go, a następnie czysty bufor wyświetlasz :) zmień kolejność. |
|
golasek1992 Temat założony przez niniejszego użytkownika |
podwojne buforowanie » 2009-11-28 11:37:18 Dzieki wielkie super dziala ;] zamykam temat |
|
« 1 » |