С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
прогаю
2 / 2 / 0
Регистрация: 22.04.2019
Сообщений: 34
1

Копирование sf::Texture

25.07.2024, 01:34. Показов 2565. Ответов 2

Author24 — интернет-сервис помощи студентам
Есть вот такой метод загрузки, где я пытаюсь заменить поломанные или недоступные текстуры плейсхолдеорм, но что то идёт не так и в итоге у текстуры просто белые квадраты. Но что самое странное если непосредственно руками заменить текстуру(как в последней строке) то всё нормально работает.

Чё же я проглядел?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//res.hpp
struct Texture : public sf::Texture
{
    std::vector<int> animations_lengths;
    int frame_size;
};
Texture default_texture, grass, cow;
 
//res.cpp
void res::load()
{
    for(auto &[path, texture] : textures)
    {
        if(!texture.loadFromFile(res_path + path) || path == "grass/grass.png")
        {
            // ничего ниже не работает 
            // texture.loadFromImage(default_texture.copyToImage()); 
            // texture.create(default_texture.getSize().x, default_texture.getSize().y);
            // texture.update(default_texture);
            // texture = default_texture; 
            debug() << "load err!!!";
        }
        else
            texture.setSmooth(false);
    }
    grass = default_texture;//тут всё нормально
}
возможно проблема в том что textures это std::map<std::string, Texture&> но в чём именно я не понимаю

Добавлено через 29 минут
Окей я понял в чём была проблема.
дело в том что как я уже сказал textures это std::map с ссылками на текстуры, где default_texture стоит первым что бы все последующие смогли быть им заменены в случае чего(ситуацию с тем что сам default_texture не сможет загрузиться я не рассматриваю). И как уже можно было догадаться std::map плевать хотел чё я там куда первым пихаю потому что он является деревом где ключи сортируются или типо того, в следствие чего default_texture уже не первый.
Наверное какой нибудь std::unordered_map решит мою проблему но это уже другая история.

Но как я понимаю просто с самого начала загрузить отдельно default_texture было бы самым верным решением.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2024, 01:34
Ответы с готовыми решениями:

Sf::Texture::GetMaximumSize()
Как правильно воспользоваться этой командой ? Где и как её написать чтоб у меня загрузилась...

Рандом и тип Texture*
Здравствуйте. Сразу хочу отметить, что в Visual C++ я не знаю вообще ничего, поэтому пишу сюда. У...

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

Заменить texture buffer на texture
Здравствуйте. Никак не удается простенький вывод матрицы наладить. Похоже проблема с barrier и тому...

Assimp texture
Здравствуйте уважаемые форумчане for (unsigned int i = 0; i &lt; scene-&gt;mNumMeshes; ++i) {...

2
3697 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
27.07.2024, 11:27 2
Цитата Сообщение от rkc137 Посмотреть сообщение
Наверное какой нибудь std::unordered_map решит мою проблему но это уже другая история.
Он тоже там не будет первым.
Вам нужен линейный контейнер.

Хотя смысла пока во всём вашем водовороте не замечено.
0
Just Do It!
4027 / 2421 / 640
Регистрация: 23.09.2014
Сообщений: 7,792
Записей в блоге: 2
31.07.2024, 09:57 3
Лучший ответ Сообщение было отмечено rkc137 как решение

Решение

Цитата Сообщение от rkc137 Посмотреть сообщение
std::map<std::string, Texture&>
переделайте на:
C++
1
std::map<std::string, Texture*>
и будет вам счастье.
0
31.07.2024, 09:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2024, 09:57
Помогаю со студенческими работами здесь

Из Texture в Image
Можно ли как-нибудь из Image сделать Texture?

Не обновляется RawImage.texture
Привет! Недавно приступил к освоению Unity. Встала задача отображения прицела. Создал Canvas, на...

Upscale Render Texture
Есть у юнитеков превью пакет PixelPerfectCamera, знаете наверное. Накладывается на стандартную...

SharpDX и dds texture
Только начинаю разработку windows phone приложений, проблема в следующем - загружаю текстуру (в...

Запись sf::texture в бинарник
так, я столкнулся с проблемой долгой подгрузкой текстур в прогу из пнг-шек ибо у меня 1500+ их, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru