Allegro 5 problem z fps
Ostatnio zmodyfikowano 2013-08-21 15:33
ison |
» 2013-08-20 16:04:37 Jeśli faktycznie chcesz zapełnić ekran kafelkami 10x10 to rzeczywiście mając osobne wywołania dla każdego quada wydajność może szybko spaść. 62x62 = 3844 kafli = 7688 trójkątów, o ile w Twoim przypadku nie jest to aż tak niewiele, to używając vertex array jest to bardzo mało i powinieneś bez problemu mieć 80+ fps przy takiej liczbie. Jeśli chcesz się bawić w optymalizacje i użyć VA to: https://www.allegro.cc/manual/5/al_draw_indexed_primPrzy użyciu vertex array'ów możesz rysować wszystkie kafle szybko jednym wywołaniem - haczyk jest jedynie w teksturach, musisz upchnąć wszystkie tekstury kafli do jednej i dla każdego kafla określić jego tex coordy. Pogooglaj, pewnie gdzieś znajdziesz przykład użycia VA w allegro. |
|
Nekronomik Temat założony przez niniejszego użytkownika |
» 2013-08-21 15:33:30 Tak wygląda pętla która wyświetla mi mapę i jest ograniczona do 50 kl/s int pokaz() { int xp, yp; for( int y = 0; y < 100; y++ ) { for( int x = 0; x < 100; x++ ) { xp = parametry_kafla.wielkosc_kafla * x + parametry_wyswietlania.przesun_x; yp = parametry_kafla.wielkosc_kafla * y + parametry_wyswietlania.przesun_y; if( xp >- parametry_kafla.wielkosc_kafla && xp < okno_x - 200 && yp >- parametry_kafla.wielkosc_kafla && yp < okno_y && kafle[ parametry_wyswietlania.poziom_z ][ y ][ x ].zajenty == 1 ) { al_draw_rotated_bitmap( z[ kafle[ parametry_wyswietlania.poziom_z ][ y ][ x ].nr_bitmapy ], 10, 10, xp + 10, yp + 10, ALLEGRO_PI / 180 * kafle[ parametry_wyswietlania.poziom_z ][ y ][ x ].obrot, false ); } } } } ilość wyświetlonych kafli zależy od wielkości okienka. Problem jest też gdy nawet wyświetlam kafle wielkości 2x2 lub 1x1 px. Zamiast OpenGL mam Direct3D, a aktywność karty graficznej podczas działania mojego programu wynosi 0%(czasami 13%) |
|
1 « 2 » |