Почему мой SF :: Sprite не показывает в SFML 3.0, хотя текстуры загружаются правильно?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему мой SF :: Sprite не показывает в SFML 3.0, хотя текстуры загружаются правильно?

Сообщение Anonymous »

Я работаю над небольшим проектом 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»