Я работаю над небольшим проектом 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
Почему мой SF :: Sprite не показывает в SFML 3.0, хотя текстуры загружаются правильно? ⇐ C++
Программы на C++. Форум разработчиков
1759043540
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 (), затем нарисуйте (), тогда отображение ()
Подробнее здесь: [url]https://stackoverflow.com/questions/79763930/why-are-my-sfsprite-not-showing-in-sfml-3-0-even-though-textures-load-correctl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия