I made some simplified source code which also contains the same issue:
#include <iostream>
#include <vector>
#include <SFML/Graphics.hpp>
class TextureArray
{
private:
std::vector<sf::Texture>textures;
public:
void addTexture(sf::Texture newTexture) {textures.push_back(newTexture);}
sf::Texture& getTexture(int elementNumber) {return textures.at(elementNumber);}
};
class ExampleObjectWithSprite
{
private:
sf::Sprite sprite;
public:
void setTexture(sf::Texture newTexture) {sprite.setTexture(newTexture, true);}
void draw(sf::RenderWindow& targetWindow) {targetWindow.draw(sprite);}
};
int main()
{
TextureArray textures;
sf::Texture txt;
txt.loadFromFile("Texture.png");
textures.addTexture(txt);
ExampleObjectWithSprite object;
object.setTexture(textures.getTexture(0));
sf::RenderWindow window(sf::VideoMode(800, 600), "TEST");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
window.close();
break;
}
}
window.clear();
object.draw(window);
window.display();
}
}
(The program requires a .png file called 'Texture', the picture in it doesn't matter because the texture isn't displayed)
Also, using a deque rather than a vector for
TextureArray doesn't produce any different results (as suggested by Nexus)