Четверг, 25 Апреля 2024, 13:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Записи участника » veeroteen [23]
Результаты поиска
veeroteenДата: Суббота, 25 Апреля 2020, 17:07 | Сообщение # 21 | Тема: Отрисовка карты SFML
был не раз
Сейчас нет на сайте
Цитата DivES ()
Я правильно понимаю, что доступ (поиск) тайлов происходит по имени?

по тегам в xml
Цитата DivES ()
В чём сложность работать с размером буфера?

сложность проста, карта получается маленькой, а сам смысл идеи в бесшовности теряется если использовать массив, но если использовать несколько массивов то как между ними переключаться, и как 2 разных массива будут отрисовываться на краю одного, в итоги я пришел к тому что такая схема будет еще полее затратной вплане кадров
veeroteenДата: Суббота, 25 Апреля 2020, 09:13 | Сообщение # 22 | Тема: Отрисовка карты SFML
был не раз
Сейчас нет на сайте
Цитата DivES ()
veeroteen, ты покажи нам код отрисовки, а мы посмотрим, раскритикуем и что-нибудь посоветуем


Код

    void drwTile() {
  for (int i = 0; i < MapY; i++) {
   for (int n = 0; n < MapX; n++)
   {
    MapSprite.setTextureRect(sf::IntRect(0 + 32 * std::atoi((TileMap[(int(actor.GetActorPos().y) / 32) - (MapY / 2) + 1 + i][(int(actor.GetActorPos().x) / 32) - (MapX / 2) + 1 + n]).c_str()), 0, 32, 32));//достаем определенный тайл
    
    
    MapSprite.setPosition(((int(actor.GetActorPos().x) / 32) - (MapX / 2) + 1 + n) * 32, (int((actor.GetActorPos().y) / 32)  - (MapY / 2) + 1 + i) * 32);//выставляем позицию
    window.draw(MapSprite);
   }
  }

    }
    

это старый вариант отрисовки, он отлично работает, но требует буфер, и соответственно я упираюсь в размер этого самого буфера
Код

  void SetMap()
  {
  
   for (int y = 0; y < MapY; y++) {
    for (int x = 0; x < MapX; x++) {

     jj = "tile" + std::to_string((int(actor.GetActorPos().x) / 32)- MapX/2 + x) + "x" + std::to_string((int(actor.GetActorPos().y) / 32)-MapY/2 + y);//имя элемента

     text = level->FirstChildElement(jj.c_str());//достаем элемент

     MapSprite.setTextureRect(sf::IntRect(0 + 32 * std::atoi(text->GetText()), 0, 32, 32));//номер тайла

     MapSprite.setPosition(
      (int((actor.GetActorPos().x) / 32) - MapX/2 + x) * 32,
      (int((actor.GetActorPos().y) / 32) - MapY/2 + y) * 32
     );

     window.draw(MapSprite);
    }
   }
  }

а тут для меня очевидно в чем проблема, но зато в таком виде я ограничен только оперативной памятью

Добавлено (25 Апреля 2020, 09:14)
---------------------------------------------

Цитата realm786 ()
tile map

Не?


ограничения на размер массива
veeroteenДата: Пятница, 24 Апреля 2020, 21:42 | Сообщение # 23 | Тема: Отрисовка карты SFML
был не раз
Сейчас нет на сайте
Подкиньте идей для отрисовки карты, просто зашел в тупик, через tinyxml прорисовка тайликов заканчивается безбожной потерей фпс, вплоть до 4 фпс за зону 20 на 40 по 32px, на самом деле проблема не очень то частая, потому что все это можно бы ло бы залить в строку, и доставать напрямую(так очевидно быстрей), но в таком случае есть конкретные ограничения на размер карты которые меня не очень устраивают, но есть еще идея разделить окно на 2 слоя, а именно самой карты, поверх которой отрисовывать персонажа с прозрачным фоном, но вот вопрос как на эти слои разделить, что бы они отрисовывались отдельно друг от друга shock shock
Форум игроделов » Записи участника » veeroteen [23]
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг