C++ 不支持SFML垂直同步

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

我试图实现一个wator模拟鲨鱼吃鱼,我想随机产卵鲨鱼,程序编译,但我得到“设置垂直同步不受支持”

在Ubuntu 16.04上工作。在我做其他事情之前,我得到了同样的错误,但窗口显示了,这不是。有什么帮助吗

编辑我已经修复了代码,我的循环中有一个太多的
{
,但是现在我得到了一个“分段错误(内核转储)”错误,我已经将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可能只是一个警告,你的程序在修复后应该会很好。我让它工作了…我有一个
{
太多了。我已经用新的错误更新了我的答案。你能添加一个代码示例吗?我不太明白你的意思