SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-04-17 14:30:43 Ohh dzięki @ison :) Sory że tak długo, ale musiałem obczaić te wątki w Allegro5, ale i tak nie kapuje :p Działa, lecz strasznie zamula mi kompa ? :) Dla przykładu dałem 10 bitmap (przy 200 aplikacja sie wywalała ... :D) ALLEGRO_BITMAP * tlo[ 10 ];
void LoadMyBitmaps( void * param ) { for( int i = 0; i < 10; i++ ) tlo[ i ] = al_load_bitmap( "media/elo.bmp" ); menu.teraz = "cus"; _endthread(); }
_beginthread( LoadMyBitmaps, 0, 0 ); menu.speedload += 0.02; al_draw_rotated_bitmap( menu.load_img, 50, 50, sz_okna / 2, dl_okna / 2, menu.speedload, 0 );
Każda bitmapa którą wczytuje waży około 700 KB, więc nie mam pojęcia czemu to tak zamula.. |
|
ison |
» 2011-04-17 14:34:28 wywołujesz _beginthread( LoadMyBitmaps, 0, 0 );
w pętli? jeśli tak to się nie dziwie czemu zamula :D |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-04-17 14:45:27 No fakt, przepraszam :D Ale za to, gdy zrobię wyświetlanie tego "kółeczka" w wątku (zamiast wczytywania bitmap) to wyskakuje taki błąd w konsoli: Assertion failed: src, file C:\...\transformations.c, line 32
This application has requested the Runtime to terminate it in an unusual way. Please conntact support ... Czyli to wiąże się już z plikiem z Allegro5.. ;/ #ifndef __al_included_allegro5_transformations_h #define __al_included_allegro5_transformations_h
#ifdef __cplusplus extern "C" { #endif typedef struct ALLEGRO_TRANSFORM ALLEGRO_TRANSFORM; struct ALLEGRO_TRANSFORM { float m[ 4 ][ 4 ]; }; AL_FUNC( void, al_use_transform,( const ALLEGRO_TRANSFORM * trans ) ); AL_FUNC( void, al_copy_transform,( ALLEGRO_TRANSFORM * dest, const ALLEGRO_TRANSFORM * src ) ); AL_FUNC( void, al_identity_transform,( ALLEGRO_TRANSFORM * trans ) ); AL_FUNC( void, al_build_transform,( ALLEGRO_TRANSFORM * trans, float x, float y, float sx, float sy, float theta ) ); AL_FUNC( void, al_translate_transform,( ALLEGRO_TRANSFORM * trans, float x, float y ) ); AL_FUNC( void, al_rotate_transform,( ALLEGRO_TRANSFORM * trans, float theta ) ); AL_FUNC( void, al_scale_transform,( ALLEGRO_TRANSFORM * trans, float sx, float sy ) ); AL_FUNC( void, al_transform_coordinates,( const ALLEGRO_TRANSFORM * trans, float * x, float * y ) ); AL_FUNC( void, al_compose_transform,( ALLEGRO_TRANSFORM * trans, const ALLEGRO_TRANSFORM * other ) ); AL_FUNC( const ALLEGRO_TRANSFORM *, al_get_current_transform,( void ) ); AL_FUNC( const ALLEGRO_TRANSFORM *, al_get_current_inverse_transform,( void ) ); AL_FUNC( void, al_invert_transform,( ALLEGRO_TRANSFORM * trans ) ); AL_FUNC( int, al_check_inverse,( const ALLEGRO_TRANSFORM * trans, float tol ) ); AL_FUNC( void, al_ortho_transform,( ALLEGRO_TRANSFORM * trans, float left, float right, float top, float bottom, float n, float f ) ); #ifdef __cplusplus } #endif
#endif
|
|
ison |
» 2011-04-17 14:51:51 mówiłem że mogą wystąpić tego typu problemy, w allegro 4.2 takie coś przechodziło ale obsługa grafiki (tzn wyświetlanie bitmap itd.) w allegro 5 w wątkach może się już sypać, nie wiem jak to dokładnie wygląda ale zawsze możesz zrobić odwrotnie, tzn w wątku wczytuj bitmapy a w głównej pętli gry obracaj kółko tak długo aż wszystkie bitmapy nie zostaną wczytane bool wczytano = false;
void LoadBitmaps( void * param ) { for(...) { ... } wczytano = true; }
... _beginthread( LoadBitmaps, 0, 0 ); while( !wczytano ) { }
|
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-04-17 14:58:54 @ison: jesteś wielki :) Naprawde hehe :)
Dzięki za pomoc! :) |
|
1 « 2 » |