gpt4 book ai didi

c++ - SFML - 窗口错误

转载 作者:行者123 更新时间:2023-11-28 07:16:06 24 4
gpt4 key购买 nike

我正在创建一个基准应用程序来测试渲染图像的速度。我创建了两个函数,一个返回 RenderWindow,一个使用 RenderWindow 在那里应用图像。当我调用第二个函数时,出现错误:No matching constructor for initialisation of 'sf::RenderWindow'

这是我的功能:

sf::RenderWindow newWindow(int w, int h)
{
sf::RenderWindow window;
window.create(sf::VideoMode(w, h), "SFML Benchmark");
return window;
}

void draw(int type, sf::RenderWindow dest) // 0 color small, 1 color big, 2 no color small, 3 no color big
{
sf::Texture img;
switch(type)
{
case 0: if(!img.loadFromFile("colorfull small.jpg")) cout << "Unable to laod image";
case 1: if(!img.loadFromFile("colorfull big.jpg")) cout << "Unable to laod image";
case 2: if(!img.loadFromFile("colorless small.jpg")) cout << "Unable to laod image";
case 3: if(!img.loadFromFile("colorless big.jpg")) cout << "Unable to laod image";
}
sf::Sprite sprite;
sprite.setTexture(img);
dest.draw(sprite);
}

我调用main中的函数:

draw(1, newWindow(600, 600));

谢谢。

最佳答案

我不认为 sf::window 是可复制的。

获取窗口的函数应如下所示:

void draw(int type, sf::RenderWindow& dest)

请注意和号,它表示引用而不是拷贝。

创建窗口的函数需要返回指向窗口的指针。当我编写它时,我决定不为它提供函数,而是在 main 中执行它,这样我就可以为窗口使用局部变量。

您的绘图函数不应创建和加载纹理和 Sprite 。它可能每秒被调用多次,您应该一次创建并加载所有 Assets ,然后以计算机允许的速度绘制加载的 Assets 。

关于c++ - SFML - 窗口错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com