SFML程序无法加载图像

SFML program can not load image

提问人:Nobody 提问时间:10/26/2023 最后编辑:genpfaultNobody 更新时间:10/26/2023 访问量:48

问:

我正在尝试在Visual Studio中使用SFML开发游戏:

#include <SFML/Graphics.hpp>
#include "windows.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    sf::VideoMode desktopMode = sf::VideoMode::getDesktopMode();
    sf::RenderWindow window(desktopMode, "Ant God Simulator", sf::Style::Fullscreen);

    sf::Texture backgroundTexture;

    if (!backgroundTexture.loadFromFile("C:\\Dev\\AntGodSimulator\\Sprites\\Background-Grass"))
    {
        MessageBox(NULL, L"Failed to load background texture.", L"Error", MB_OK);
        return -1;
    }

    sf::Sprite background(backgroundTexture);
    background.setScale(
        (float)desktopMode.width / backgroundTexture.getSize().x,
        (float)desktopMode.height / backgroundTexture.getSize().y
    );

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear(sf::Color(50, 50, 50));
        window.draw(background);
        window.display();
    }

    return 0;
}

在我尝试加载和显示背景图像之前,一切正常。程序将立即退出,并且不显示背景图像。

我尝试了以下方法:

  • 已确保图像的路径正确无误。
  • 我检查了图像是否在项目中的正确目录中
  • 更改了图像格式(尝试了 .jpg 和 .png)。
  • 确保在Visual Studio中正确设置了调试/发布配置,并且我链接到了正确的SFML库。
C++ 可视化工作室 WinAPI SFML

评论

3赞 HolyBlackCat 10/26/2023
我相信,您必须将扩展名作为名称的一部分传递。
2赞 drescherjm 10/26/2023
C:\\Dev\\AntGodSimulator\\Sprites\\Background-Grass这真的是没有扩展名的文件名吗?也许您的文件资源管理器设置为隐藏扩展名并导致这种混淆。
0赞 Nobody 10/26/2023
对不起,我之前尝试过添加带有名称的扩展名,但不起作用,它实际上是文件的名称,而不是很好的名字。
1赞 PaulMcKenzie 10/26/2023
那么是失败了吗?如果是这样,SFML附带了源代码。您可能已经调试了代码并单步执行该函数,以确切了解该函数返回失败的原因。loadFromFileloadFromFile
1赞 Jesper Juhl 10/26/2023
SFML当然可以加载文件。我一直在自己的项目中这样做。

答: 暂无答案