【问题标题】:SFML Image.saveToFile access violationSFML Image.saveToFile 访问冲突
【发布时间】:2018-02-24 20:20:39
【问题描述】:

所以我正在开发一个程序,该程序可以生成具有随机选择颜色形状的图像。我想保存输出的图像,这样我就可以在图像上使用着色器,比如模糊,以及有一个用于任何目的的输出文件。这是我的窗口的主循环。

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

    for (int i = 0; i < rectangles.size(); i++)
        window.draw(rectangles[i]);

    Texture outputTexture;
    outputTexture.create(width, height);
    outputTexture.update(window);

    Image output;
    output.create(width, height);
    output = outputTexture.copyToImage();
    output.saveToFile("output.png");

    Sprite sprite;
    sprite.setTexture(outputTexture);

    window.clear();
    window.draw(sprite);
    window.display();
}

我已经用精灵对此进行了测试,并且窗口正确地绘制了精灵。但是我在这里遇到错误

output.saveToFile("output.png");

在 name.exe 中的 0x00007FF8D1527190 (sfml-graphics-2.dll) 处引发异常:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF。

我似乎无法解决问题,我真的需要能够将图像保存到文件中。谢谢大家的帮助

【问题讨论】:

  • 嗯。一切都在这里工作。我不得不添加一些代码来生成 RectangleShapes,但是 output.png 被保存了。
  • 先创建图像没有意义。 copyToImage() 创建图像的新副本。

标签: c++ sfml


【解决方案1】:

我遇到了同样的问题,解决方法是在 Visual Studio 的“附加依赖项”属性中将“sfml-xxx.lib”更改为“sfml-xxx-d.lib”。

【讨论】:

    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2019-03-03
    • 2012-11-20
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多