Dies ist resources.h:sf :: Sprite ist weiß rechteckig (Textur, die durch Verweis übergeben versuchen)
extern sf::Sprite Sprite00;
void load_sprite(sf::Sprite &externalSprite, sf::Texture &externalTexture) ;
void draw_sprite(sf::RenderWindow &window, sf::Sprite &externalSprite);
void setposition_sprite(sf::Sprite &externalSprite, float x, float y);
Dies ist resources.cpp:
sf::Sprite Sprite00;
void load_sprite(sf::Sprite &externalSprite, sf::Texture &externalTexture)
{
externalSprite.setTexture(externalTexture);
}
void draw_sprite(sf::RenderWindow &window, sf::Sprite &externalSprite)
{
window.draw(externalSprite);
}
void setposition_sprite(sf::Sprite &externalSprite, float x, float y)
{
externalSprite.setPosition(x, y);
}
void loadResources()
{
sf::Texture myTexture;
myTexture.loadFromFile("images/block3d.png");
load_sprite(Sprite00, myTexture);
}
In game.cpp:
void Game::render()
{
window.clear();
setposition_sprite(Sprite00, 100, 100);
draw_sprite(window, Sprite00);
window.display();
}
Das Sprite, das angezeigt wird, ist weiß, die Textur ist verloren. Ich weiß nicht, wie ich es beheben soll. Ich denke nicht, dass ich die Referenz richtig passiere.
loadResources wird in main.cpp aufgerufen. Ich möchte diesen Sprite00 zum Beispiel in game.cpp in der Funktion Game :: render(); anzeigen. Auch wenn ich es woanders in einer anderen cpp anzeigen möchte, was soll ich tun, um es richtig zu machen?
"loadResources wird in main.cpp" Code aufgerufen oder es ist nicht geschehen. Besser, konstruiere ein [mcve] und poste es, wenn das Konstruieren des MVCE dich nicht stöhnen ließ und sich dumm anfühlte. – user4581301