Не удается загрузить изображение с помощью SFML - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь загрузить изображение с помощью SFML с помощью Xcode, но каждый раз, когда я запускаю программу, окно (которое было создано с помощью кода) мигает и исчезает ...

Вот код, который я использую :

#include <SFML/Graphics.hpp>
#include <iostream>

#define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT 1024

int main()
{
    sf::RenderWindow window(sf::VideoMode(SCREEN_WIDTH, SCREEN_HEIGHT), "Orsome Game");



    while(window.isOpen())
    {

        sf::Event e;


        while(window.pollEvent(e))
        {
            switch (e.type)
            {
                case sf::Event::Closed:
                    window.close();

                    break;
            }
        }

        sf::Image image;

        if(!image.loadFromFile("sprite.png")){
            return -1;
        }


        window.clear(sf::Color(255,255,255));

        window.display();

    }
    return EXIT_SUCCESS;
}

Также поместили файл изображения туда, где находится файл c ++, но он все равно не работает!

1 Ответ

0 голосов
/ 09 мая 2020

Я бы поставил sf::Style::Default в аргументы RenderWindow сразу после имени окна «Orsome Game». Поскольку вы используете pollEvent, это позволит вам выйти из окна, нажав кнопку x в правом верхнем углу, как в макете приложения по умолчанию.

Находится ли изображение в том же каталоге, что и ваше файл решения? Или ваш основной. cpp? Так и должно быть, конечно. И, возможно, попробуйте загрузить изображение с помощью Texture и Sprite, например:

sf::Texture texture;
texture.loadFromFile("picturename.png");
sf::Sprite sprite;
sprite.setTexture(texture);

внутри открытого окна l oop.

Чтобы нарисовать его:

// after window.clear() ...

//... your code

window.draw(sprite);

//... other things to draw

// and then, your window.display();

Но, наверное, ваш sf :: Image тоже должен работать. Скажите мне, как это происходит


EDIT:


Попробуйте этот код и посмотрите, откроется ли окно. В противном случае это может быть проблема настройки загрузите SFML на свой компьютер, и вам нужно будет найти хорошее руководство о том, как правильно его настроить! Но посмотрим:

#include <SFML/Graphics.hpp>
#include <iostream>

using namespace sf;

int main()
{
    RenderWindow window(VideoMode(640, 640), "Test", Style::Default);

    while (window.isOpen()) {

        Event _event;
        while (window.pollEvent(_event)) {
            switch (_event.type) {
            case Event::Closed:
                window.close();
                break;
            }
        }




        window.clear();


        // draw

        // ...

        window.display();

        }



    return 0;
}
...