Piast Temat założony przez niniejszego użytkownika |
[Allegro] Skokowa przezroczystość » 2009-08-20 17:01:57 chciałbym aby w rysowanym kole przezroczystość była płynna ,a jest skokowa #include <allegro.h>
void init(); void deinit();
int main() { init(); BITMAP * bufor = NULL; bufor = create_bitmap( 640, 480 ); while( !key[ KEY_ESC ] ) { int coin = 0, hard = 255; int x = 0, y = 0; while( coin <= 127 ) { drawing_mode( DRAW_MODE_TRANS, NULL, 0, 0 ); set_trans_blender( 255, 255, 255, hard ); ellipse( bufor, 250, 250, x, y, makecol( 150, 150, 150 ) ); ellipse( bufor, 250, 250, x, y - 1, makecol( 150, 150, 150 ) ); putpixel( bufor, 250, 250, makecol( 150, 150, 150 ) ); coin++; x++; y++; hard = hard - 2; } blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); clear_keybuf(); } deinit(); return 0; } END_OF_MAIN()
void init() { int res; allegro_init(); set_color_depth( 16 ); res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); if( res != 0 ) { allegro_message( allegro_error ); exit( - 1 ); } install_timer(); install_keyboard(); install_mouse(); }
void deinit() { clear_keybuf(); } da się zrobić łagodne przejścia tonalne narysowanego koła ? |
|
krdk |
» 2009-08-20 17:19:15 Jeśli dobrze zrozumiałem, to utwórz pętle powtarzającą się [il. klatek] razy, i przy każdym obiegu pętli zwiększaj o 1 przezroczystość. |
|
Piast Temat założony przez niniejszego użytkownika |
» 2009-08-20 17:29:42 zrobiłem przezroczystość o 2 (i tak powinno być płynniej ,a o 1 też nic nie daje) jak zmieniłem bity z 16 na 32 to zrobiła się płaszczyzna na moim okregu i na końcu dopiero zaczęła działać przezroczystość . Chciałbym aby od początku płynnie przechodziła w obraz który jest tłem (na razie czarne)
|
|
Piast Temat założony przez niniejszego użytkownika |
» 2009-08-21 13:45:30 próbował ktoś coś z tym zrobić ? wklejcie ten mój kod na swój kompilator i dajcie odpowiedź jak u was jest ? |
|
DejaVu |
» 2009-08-21 17:57:30 Wieczorem sprawdzę. |
|
Piast Temat założony przez niniejszego użytkownika |
» 2009-08-25 10:46:34 czy ktoś to sprawdzał ? |
|
DejaVu |
» 2009-08-25 12:45:56 #include <allegro.h>
void init(); void deinit();
int main() { init(); BITMAP * bufor = NULL; bufor = create_bitmap( 640, 480 ); while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 255, 255, 255 ) ); int coin = 0, hard = 0; int x = 0, y = 0; drawing_mode( DRAW_MODE_TRANS, NULL, 0, 0 ); while( coin <= 127 ) { set_trans_blender( 255, 255, 255, hard ); ellipse( bufor, 250, 250, x, y, makecol( 150, 150, 150 ) ); ellipse( bufor, 250, 250, x, y - 1, makecol( 150, 150, 150 ) ); coin++; x++; y++; hard = hard + 2; } blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); clear_keybuf(); } deinit(); return 0; } END_OF_MAIN()
void init() { int res; allegro_init(); set_color_depth( 16 ); res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); if( res != 0 ) { allegro_message( allegro_error ); exit( - 1 ); } install_timer(); install_keyboard(); install_mouse(); }
void deinit() { clear_keybuf(); }
Skokowy efekt masz, ponieważ używasz 16 bitowego trybu kolorów. Zmień na 32 bity będzie dobrze. W 16 bitowym trybie masz maksymalnie 64 odcieni koloru (zielonego), 32 niebieskiego i 32 czerwonego. W trybie 32bitowym masz 256 kolorów na każdą składową. |
|
Piast Temat założony przez niniejszego użytkownika |
» 2009-08-25 13:22:14 jak zmieniłem na 32 bity to ten okrąg jest jednolity i dopiero pod koniec okręgu zmienia się przezroczystość ,a powinno być równomiernie. |
|
« 1 » 2 |