【发布时间】: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()创建图像的新副本。