[SFML]Renderowanie mapy z kafelków
Ostatnio zmodyfikowano 2012-08-22 20:53
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? :) |
|
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. |
|
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 |
|
ksry Temat założony przez niniejszego użytkownika |
» 2012-08-21 22:02:13 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.. |
|
m4tx |
» 2012-08-22 07:08:20 Strzelam, że tablica ma mniejszą wielkość niż [13][22]. |
|
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? |
|
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. |
|
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. 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 ); } } } }
Edit: Jest to w SFML 1.6 ale łatwo można to przerobić i MAM NADZIEJE że dasz sobie rade. |
|
1 « 2 » 3 4 5 |