Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Anonymous
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
for (unsigned long y = 0; y < 38; ++y) { for (unsigned long x = 0; x < 54; ++x) { if (map1[y][x] == 1) { tiles.draw (x * 16 + offset_x, y * 16 + offset_y, 0, 0, 16, 16); } // usw... |
Anonymous
unregistriert
Anonymous
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Die Auflösung beträgt 800x600, die Höhe muss also über 600 Betragen // +32 Tolleranzwert Oben und Unten das bedeutet: 20x32 = 640. // Das selbe bei der X koordiante: 26x32 = 832 for (unsigned long y=0; y<20; ++y) { for (unsigned long x=0; x<26; ++x) { // Momentane ID für das Array rausfinden unsigned char curr_x_id = int(::floor(long double(off_x_+x*32)/32)); unsigned char curr_y_id = int(::floor(long double(off_y_+y*32)/32)); // Nur rendern was möglich ist und dann rendern, so das // nichts daneben geht if (!(curr_x_id < 0 || curr_x_id > map_width-1 || curr_y_id < 0 || curr_y_id > map_height-1)) tiles_.render (static_cast<int>(::floor(long double(-off_x_)))%32+x*32, // Y-Koordinate static_cast<int>(::floor(long double(-off_y_)))%32+y*32, // X-Koordinate map_[curr_y_id][curr_x_id]); // Tile-ID die in map_ angespeichert ist } } |
Anonymous
unregistriert
Zitat von »"nix da"«
WarMuuh!!
Warum soooo umständlich? Einfach ausrechnen und gut ist.
.
Anonymous
unregistriert
C-/C++-Quelltext |
|
1 2 3 |
(static_cast<int>(::floor(long double(-offset_x)))%16+x*16, // Y-Koordinate static_cast<int>(::floor(long double(-offset_y)))%16+y*16, // X-Koordinate 0, 0, 16, 16); |
Anonymous
unregistriert
Zitat von »"nix da"«
Mein Code zeichnet nur sichtbares, mapgröße ist egal, smooth scrolling und kein overdraw.
Zitat
Auch hier mit Bildinhaltsverschiebungen, Rendertargets und co anzukommen ist mega übertrieben, das schlägt sogar noch kräftiger auf die Performance.
Anonymous
unregistriert
Werbeanzeige