Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Lkk le Juin 21, 2023, 01:46:05 pm

Titre: Error: Could not load texture
Posté par: Lkk le Juin 21, 2023, 01:46:05 pm
Problème quand j'essaye de charger une texture, voici le passage du code en question :

void Player::initPlayer(float posX, float posY)
{
    if (!m_spriteTexture.loadFromFile("images/player.png")) // problème ici
    {
        std::cout << "Error: Could not load texture" << std::endl;
        return;
    }

    m_player.setTexture(m_spriteTexture);
    m_player.setPosition(sf::Vector2f(posX, posY));
}

J'ai déjà changer le répertoire de projet de travail.

J'utilise Visual Studio 2022 et j'ai également une erreur de débogage

Exception non gérée à 0x504638C4 (vcruntime140.dll) dans SMFL.exe : 0xC0000005 : Violation d'accès lors de la lecture de l'emplacement 0x0B092000.

Et aussi dans la sortie j'ai des caractères étrange :

Failed to load image "õ‗²²²²    Ìf┴± îh2█yîQ█y░ÅáÌG
ıf┌± ê0█yöc█yP^J
P^J
Éıhth_J
h_J
╠f˱ î4Ptî¼Èý8\|    ╦fȱ Ç                                                ┬fݱ îh2█yîQ█y░ŭ˨fµ± îîyG
îyG
    h│G
ê│G
        ­f ± î³/█y,c█yÏ,Ó{D░öp]J
´f­± î,sÎz©z░_J
        µfë± WGL_EXT_pixel_format_packed_float              aé± î╚7█yDV█y░½8]J

Óaø± î╚7█yDV█y(®`J
à
Éa£± ê X X

(il y en a beaucoup plus que ça)
Le problème persiste même quand je lance l'exécutable ou je met bien l'image de mon sprite dans le bon dossier.

Partie de player.cpp

#include "Player.h"
// Fonction d&#39;initialisation

void Player::initVariables()
{
    m_life = 3;
    m_speed = 0.5;
}

void Player::initPlayer(float posX, float posY)
{
    if (!m_spriteTexture.loadFromFile("images/player.png"))
    {
        std::cout << "Error: Could not load texture" << std::endl;
        return;
    }

    m_player.setTexture(m_spriteTexture); .
    m_player.setPosition(sf::Vector2f(posX, posY));
}
// Constructeur

Player::Player(float width, float height)
{
        initVariables();
        initPlayer(width / 2, height / 2);
}


partie de game.cpp
#include "Game.h"

// Fonction d&#39;initialisation
void Game::initVariables()
{
        m_player = nullptr;
        m_window = nullptr;
        m_gameStarted = true;
        m_gameOver = false;
        m_dt = 1.f / 60.f;
}

void Game::initWindow()
{
        m_videoMode.width = 800;
        m_videoMode.height = 600;
        m_window = new sf::RenderWindow(m_videoMode, "Survival & Zombie", sf::Style::Close | sf::Style::Titlebar);
}

void Game::initSprite()
{
        m_player = new Player(m_videoMode.width, m_videoMode.height);
}

// Constructeur & Destructeur

Game::Game()
{
        this->initVariables();
        this->initWindow();
        this->initSprite();
}


J'ai passé beaucoup de temps sur le problème et ça me bloque beaucoup pour mon apprentissage SFML,
Si vous avez besoin de plus d'informations je reste disponible.
Titre: Re: Error: Could not load texture
Posté par: G. le Juin 21, 2023, 09:53:11 pm
En général quand t'as plein de caractères étranges dans la console quand tu charges une image, c'est que tu compiles en mode Release en ayant lié la version Debug de SFML, ou à l'inverse compiles en mode Debug avec la version Release de SFML.
A vérifier :p
Titre: Re: Error: Could not load texture
Posté par: quicklyrufous le Septembre 26, 2024, 09:56:11 am
Le problème persiste même quand je lance l'exécutable ou je met bien l'image de mon sprite dans le bon dossier.
geometry dash world (https://geometrydashworld.net)
Partie de player.cpp

#include "Player.h"
// Fonction d&#39;initialisation

void Player::initVariables()
{
    m_life = 3;
    m_speed = 0.5;
}

void Player::initPlayer(float posX, float posY)
{
    if (!m_spriteTexture.loadFromFile("images/player.png"))
    {
        std::cout << "Error: Could not load texture" << std::endl;
        return;
    }

    m_player.setTexture(m_spriteTexture); .
    m_player.setPosition(sf::Vector2f(posX, posY));
}
// Constructeur

Player::Player(float width, float height)
{
        initVariables();
        initPlayer(width / 2, height / 2);
}

Assurez-vous que le chemin d'accès au fichier image « images/player.png » est correct. Le chemin d'accès est relatif au répertoire de travail de l'exécutable, vérifiez donc que le dossier images se trouve là où l'exécutable est exécuté. Assurez-vous que player.png existe dans le dossier images et qu'il n'est pas corrompu. Vous pouvez essayer d'ouvrir l'image dans une visionneuse d'images.