SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Рисование карты, оптимизация алгоритма › Ответ в теме: Рисование карты, оптимизация алгоритма
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int vievX=view.getCenter().x,viewY= view.getCenter().y; for (int y=0; y<CY_MAP; ++y) for (int x=0; x<CX_MAP; ++x) { if (map[y][x] == 0) continue; // Фон не рисуем. mapSprite.setTextureRect( sf::IntRect((map[y][x]%10-1)*16, map[y][x]/10*16, 16, 16) ); // 16 - ширина и высота каждого спрайта mapSprite.setPosition(x*16, y*16); int dist = sqrt((mapSprite.getPosition().x - viewX)*(mapSprite.getPosition().x - viewX) + (mapSprite.getPosition().y - wiewY)*(mapSprite.getPosition().y - wiewY)); if (dist<600) window.draw(mapSprite); } |
Легче просто отрисовать спрайты в определенном радиусе вокруг центра камеры.