SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Перед отображением спрайта показывает всю картинку › Ответ в теме: Перед отображением спрайта показывает всю картинку
Если при создании объекта вы вызываете texture.loadFromFile(“name.png”), то переместите загрузку текстур в отдельное место, и при создании нового объекта указывайте ссылку на уже загруженную текстуру в качестве аргумента. Тоже самое касается остальных файлов ресурсов, звуки, музыка.
Вот наглядный пример.
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#pragma once #include<SFMLGraphics.hpp> typedef sf::Texture JPG, PNG; class Texture { public: PNG arnold_Platformer; JPG wall; private: inline void Load(sf::Texture& t, sf::String file); inline void LoadSmoth(sf::Texture& t, sf::String file); public: Texture(void); }; |
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#pragma once #include<SFMLGraphics.hpp> typedef sf::Texture JPG, PNG; class Texture { public: PNG arnold_Platformer; JPG wall; private: inline void Load(sf::Texture& t, sf::String file); inline void LoadSmoth(sf::Texture& t, sf::String file); public: Texture(void); }; |
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Texture::Texture(void) { Load(arnold_Platformer, "arnold_platformer.png"); Load(wall, "crate.png"); } #include "Texture.h" inline void Texture::LoadSmoth(sf::Texture& t, sf::String file) { t.loadFromFile("Textures/"+file); t.setSmooth(true); } inline void Texture::Load(sf::Texture& t, sf::String file) { t.loadFromFile("Textures/"+file); } |
C++
1 2 |
wall[0] = new Wall(vec2f(-37.5f,-37.5f), vec2f(10.f,75.f), texture.wall, world, 0, "Wall"); wall[1] = new Wall(vec2f(5.f,0.f), vec2f(75.f,10.f), texture.wall, world, 0, "Wall"); |