Я работаю над небольшим проектом C ++ 17, используя SFML 3.0, и я столкнулся с проблемой:
мои спрайты не отображаются в окне, даже если текстуры успешно загружаются (я проверял это в отладчике). < /p>
Само окно открывается, прочитывает синий, а петля работает хорошо. Но ни один из моих спрайтов не виден.#include "Game.h"
#include "MathHelpers.h"
#include
#include
Game::Game()
: m_window(sf::VideoMode({ 1000, 600 }), "Tower Defense")
, m_eGameMode(Play) // le jeu démarre en mode Play par défaut
, m_PlayerSprite(m_PlayerTexture)
, m_EnnemySprite(m_EnnemyTexture)
, m_WeaponSprite(m_WeaponTexture)
{
m_PlayerTexture.loadFromFile("images/player.png");
m_PlayerSprite.setTexture(m_PlayerTexture);
m_PlayerSprite.setScale(sf::Vector2f(4, 4));
m_PlayerSprite.setPosition(sf::Vector2f(200, 100));
m_PlayerSprite.setOrigin(sf::Vector2f(8, 8));
m_EnnemyTexture.loadFromFile("images/ennemy.png");
m_EnnemySprite.setTexture(m_EnnemyTexture);
m_EnnemySprite.setScale(sf::Vector2f(0.08, 0.08));
m_EnnemySprite.setPosition(sf::Vector2f(500, 300));
m_EnnemySprite.setOrigin(sf::Vector2f(600, 600));
m_WeaponTexture.loadFromFile("images/weapon.png");
m_WeaponSprite.setTexture(m_WeaponTexture);
m_WeaponSprite.setScale(sf::Vector2f(0.06, 0.06));
m_WeaponSprite.setOrigin(sf::Vector2f(600, 600));
}
void Game::Run() {
while (m_window.isOpen()) {
sf::Event event;
while (m_window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
m_window.close();
}
Draw();
}
}
void Game::Draw() {
m_window.clear(sf::Color::Blue);
m_window.draw(m_PlayerSprite);
m_window.draw(m_WeaponSprite);
m_window.draw(m_EnnemySprite);
m_window.display();
}
< /code>
game.h
#pragma once
#include
class Game
{
public:
Game(); //Constructeur par défaut
~Game();
enum GameMode
{
Play,
LevelEditor
};
void Run();
private:
void UpdatePlay();
void UpdateLevelEditor();
void Draw();
private: // Variables membres
sf::RenderWindow m_window;
sf::Time m_deltaTime;
GameMode m_eGameMode;
sf::Texture m_PlayerTexture;
sf::Texture m_EnnemyTexture;
sf::Texture m_WeaponTexture;
sf::Sprite m_PlayerSprite;
sf::Sprite m_EnnemySprite;
sf::Sprite m_WeaponSprite;
};
< /code>
То, что я проверил до сих пор: < /p>
Успешно загружается текстуры - Loadfromfile возвращает true. < /p>
Положения и шкалы спрайтов кажутся правильными. < /p>
Порядок рендеринга является правильным: clear (), затем нарисуйте (), тогда отображение ()
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-correctl