SFML 音频视觉工作室

问题描述 投票:0回答:1

我正在使用 Visual Studio 运行一个简单的 SFML 代码,该代码呈现一个圆圈并播放音频。我试图在渲染发生之前和渲染窗口关闭之后播放音频, 但由于某种原因,在我关闭渲染窗口后,音频没有被播放。

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

int main() 
{

    // playing audio
    sf::SoundBuffer buffer;
    if (!buffer.loadFromFile("audio/powerUp.wav"))
    {
        std::cout << "Failed to load audio file\n";
        return -1;
    }
    else
    {
        std::cout << "Audio loaded\n";
    }

    sf::Sound sound;
    sound.setBuffer(buffer);
    sound.setVolume(10.0f);
    sound.play(); // works

    // rendering a circle (Test)
    sf::RenderWindow window(sf::VideoMode(600, 600), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

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

        window.clear();
        window.draw(shape);
        window.display();
    }
    sound.play(); // not works
    return 0;
}

我已将 lib 和包含文件链接到项目,并且还在

Linker
>
Input
>
Additional Dependencies
中添加了以下文件
sfml-audio-d.lib;sfml-graphics-d.lib;sfml-window-d.lib;sfml-system-d.lib;sfml-network-d.lib;

添加到 Visual Studio 配置中的包含和 lib 路径

并使用C++ 17编译器

知道为什么会发生这种情况吗?

audio graphics c++17 rendering sfml
1个回答
0
投票

因为声音一开始播放程序就结束了,所以你什么也听不到。

sound.play()
启动一个新线程,以不阻塞接下来的代码,但由于主函数随后结束,子线程也会结束。您可以尝试将睡眠功能放在
sound.play();
之后,但在
return 0;

之前
© www.soinside.com 2019 - 2024. All rights reserved.