Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML]Renderowanie mapy z kafelków

Ostatnio zmodyfikowano 2012-08-22 20:53
Autor Wiadomość
m4tx
» 2012-08-21 19:54:34
Może po prostu zwykły zagnieżdżony for przy wybieraniu obiektów widocznych dla użytkownika? :)
P-63229
ksry
Temat założony przez niniejszego użytkownika
» 2012-08-21 20:01:26
No tak, ale ten for musi na czymś operować :P dlatego pytam, czy istnieje lepsze rozwiązanie dla przechowywania danych o mapie, niż przedstawione przeze mnie.
P-63231
waxx
» 2012-08-21 20:28:16
Akurat gadałem z Laurentem [twórcą SFML-a] o tym i sam mówił, że to było tak zrobione - Sprite jest lekką klasą i można nią spamować jak się chce.. Zresztą miałem w swoim projekcie z kilka tyśków sprajtów na raz czasem i też, było ok. Jeśli jakieś spadki to przez słaby rendering w 1.6, a nie alokowanie sf::Sprite.

edit:
zresztą
do takich problemów można dojśc mając gotową grę, teraz to rób żeby było w miarę ok i działało
P-63232
ksry
Temat założony przez niniejszego użytkownika
» 2012-08-21 22:02:13
C/C++
for( int x = 0; x <= 13; x++ )
{
    for( int y = 0; y <= 22; y++ )
    {
        data.ekran_mapa[ x ][ y ].setPosition( x * 32, y * 32 );
    }
}

czemu mój program od razu dostaje crasha przy czymś takim? wpisując klucz ręcznie, bez pętli, wszystko śmiga..
P-63245
m4tx
» 2012-08-22 07:08:20
Strzelam, że tablica ma mniejszą wielkość niż [13][22].
P-63271
JarekKatowice
» 2012-08-22 10:03:09
"...Jeśli jakieś spadki to przez słaby rendering w 1.6, a nie alokowanie sf::Sprite...."

Rozumiem z tego ze w SFML 2.0 rendering jest lepszy? Ktos juz to sprawdzal?
P-63272
waxx
» 2012-08-22 10:24:41
Oj jest.
Skopiuje cytat Laurenta


There are 3 main things to know:

- SFML now uses vertex arrays (not VBOs because it still has to handle potentially small/dynamic geometries)
- it optimizes out redundant OpenGL states
- it implements minimal batching: it pretransforms and accumulates small geometries into larger buffers (so the typical use case of drawing several sprites that use the same texture is well optimized)

Nie oznacza to że nie da się zrobić w 1.6 gry - da się i to całkiem rozbudowaną, ale jakbym miał coś nowego pisać to raczej w 2.0.
P-63273
RazzorFlame
» 2012-08-22 11:07:15
m4tx jestes juz tu na forum dlugi czas, więc czemu odrazu nie mogleś mu powiedzieć zeby zobaczył se na easykoder.vot.pl xD :P
On tam fajnie to zrobił. No ocz mozna też zrobić dla kazdego kafelka sprite'a ale myśle że to jest nie potrzebne.
C/C++
short int mapa[...][...] =
{
    ...,
    ...,
    ...,
};

void WyswietlMape()
{
    sf::Sprite handlesprite( jakis_image_z_kafelkami );
    for( int l1 = 0; l1 <...; l1++ )
    {
       
        for( int l2 = 0; l2 <...; l2++ )
        {
            if( mapa[ l1 ][ l2 ] == 0 )
            {
                handlesprite.SetPosition( l1 * szer, l2 * wys );
                handlesprite.SetSubRect( jakis_tam_prostokat );
                application.Draw( handlesprite );
            }
        } //for2
       
    } //for1
   
} // funkcja

Edit:
Jest to w SFML 1.6 ale łatwo można to przerobić i MAM NADZIEJE że dasz sobie rade.
P-63275
1 « 2 » 3 4 5
Poprzednia strona Strona 2 z 5 Następna strona