Сравнивать спрайты? - PullRequest
       8

Сравнивать спрайты?

0 голосов
/ 04 января 2012

Для игры, над которой я работаю, я бы хотел сравнить два спрайта в SFML2, например, с помощью оператора if ().Например, я мог бы иметь большое изображение 1280x1024 с одним серым пикселем среди всех черных пикселей.Тогда у меня будет 2 отдельных спрайта, один - только серый пиксель, а другой - карта.Я бы обрезал только серый пиксель с карты и сравнил бы эти два, если это правда, другие вещи.

Вы видите, что я получаю здесь?Это возможно?Если да, то как?

1 Ответ

2 голосов
/ 05 января 2012

Я с Алексом, который говорит, что есть более умные способы проверки спрайтов.

  1. Не сравнивайте имена файлов, не ссылайтесь на один пиксель в изображении, потому что вам нужно загрузить все изображениев память, чтобы сделать это, вы загружаете 1,3 МБ в память, чтобы проверить один пиксель?
  2. Сохраните все свои ресурсы в диспетчере ресурсов и ссылайтесь на них через UID, если у ресурса есть UID, используйте егоресурс.

Номер 2 предпочтительнее, чем все остальное, но есть много других способов

Редактировать: Согласно комментариям, вы бы не "обрезали" пиксель, вы быпросто загрузите изображение в память и используйте класс Image, чтобы получить цвет пикселя в определенном месте.Ниже приведен пример

sf::Image* map = MapSprite->GetTexture()->CopyToImage()
if (map->GetPixel(666,666) == sf::Color::Black)
{
    //Funky stuff here
}

ПРИМЕЧАНИЕ: вы упомянули SFML2, так что это из этого набора документации, может отличаться для 1.6

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

...