C++ 不支持SFML垂直同步
我试图实现一个wator模拟鲨鱼吃鱼,我想随机产卵鲨鱼,程序编译,但我得到“设置垂直同步不受支持” 在Ubuntu 16.04上工作。在我做其他事情之前,我得到了同样的错误,但窗口显示了,这不是。有什么帮助吗 编辑我已经修复了代码,我的循环中有一个太多的C++ 不支持SFML垂直同步,c++,c++11,sfml,C++,C++11,Sfml,我试图实现一个wator模拟鲨鱼吃鱼,我想随机产卵鲨鱼,程序编译,但我得到“设置垂直同步不受支持” 在Ubuntu 16.04上工作。在我做其他事情之前,我得到了同样的错误,但窗口显示了,这不是。有什么帮助吗 编辑我已经修复了代码,我的循环中有一个太多的{,但是现在我得到了一个“分段错误(内核转储)”错误,我已经将png更改为8位,但这没有帮助 #include <SFML/Graphics.hpp> int main() { int n; int x; int y
{
,但是现在我得到了一个“分段错误(内核转储)”错误,我已经将png更改为8位,但这没有帮助
#include <SFML/Graphics.hpp>
int main()
{
int n;
int x;
int y;
sf::RenderWindow window(sf::VideoMode(800, 800), "SFML works!");
// Set Frame Rate to 60fps
window.setFramerateLimit(60);
srand(time(0));
sf::Texture shark;
shark.loadFromFile("image.png");
std::vector<sf::Sprite> Fishes(n,sf::Sprite(shark));
for (int n = 0; n < Fishes.size(); n++){
Fishes[n].setOrigin(15, 15);
Fishes[n].getPosition();
Fishes[n].setPosition(x = rand() % 790 + 10, y = rand() % -10 - 50);
}
// run the program as long as the window is open
while (window.isOpen())
{
// check all the window's events that were triggered since the last iteration of the loop
sf::Event event;
while (window.pollEvent(event))
{
// "close requested" event: we close the window
if (event.type == sf::Event::Closed)
window.close();
}
Fishes[n].setPosition(x, y+=1);
Fishes[n].rotate(1);
// clear the window with black color
window.clear(sf::Color::Black);
// draw everything here...
// window.draw(...);
window.draw(Fishes[n]);
// end the current frame
window.display();
}
return 0;
}
#包括
int main()
{
int n;
int x;
int-y;
sf::RenderWindow窗口(sf::VideoMode(800800),“SFML工作!”;
//将帧速率设置为60fps
设置帧率限制(60);
srand(时间(0));
结构鲨鱼;
shark.loadFromFile(“image.png”);
性病:媒介鱼(n,sf::雪碧(鲨鱼));
对于(int n=0;n
我会添加一条评论,但我缺乏声誉。从非法内存写入或读取会导致SEGFULT。对于您的情况,我会尝试检查您的图像是否正确加载
我还要注意的是,对于主体中只有一行的循环,不要只使用一个卷曲括号,请同时使用两个括号或不使用任何括号。在渲染循环中,鱼上仍然缺少一个循环 第一个循环将循环变量
n
设置为最后一条鱼之后的数字。再次使用相同的循环变量将导致未定义的行为。修复它。可能需要为n
循环添加另一个,在while
渲染循环中第二次使用n
具体来说,当您谈到这一行时:
Fishes[n].setPosition(x, y+=1);
变量n
不是任何类型的循环变量。更糟糕的是,它是完全随机的,没有设置任何值。它是int n;
从main()
之后的第一行开始。如果删除该行(main之后的第一行),您将看到问题所在。您的循环变量是i
,但您使用的是n
,一个全局变量。您在渲染中缺少一个完整的循环,只需再次使用此n
。我认为您应该首先理清逻辑(一个好主意可能是将全局变量限制为零,以便查看您所处的范围).v-sync可能只是一个警告,你的程序在修复后应该会很好。我让它工作了…我有一个{
太多了。我已经用新的错误更新了我的答案。你能添加一个代码示例吗?我不太明白你的意思