C++ SFML闪烁的渲染窗口?

C++ SFML闪烁的渲染窗口?,c++,sfml,C++,Sfml,我希望有人能帮助我,我使用的是SFML2.1,当我绘制我的渲染窗口时,它一直在闪烁,现在我知道SFML使用两个缓冲区,所以我确定一个缓冲区根本没有被绘制,但我不明白为什么 这是我的循环 while(!quit) { rs.Canvas.pollEvent(gameEvent); colour += 1; rs.Update(colour); if(gameEvent.type == sf::Event::Closed) quit = true;

我希望有人能帮助我,我使用的是SFML2.1,当我绘制我的渲染窗口时,它一直在闪烁,现在我知道SFML使用两个缓冲区,所以我确定一个缓冲区根本没有被绘制,但我不明白为什么

这是我的循环

while(!quit)
{

    rs.Canvas.pollEvent(gameEvent);
    colour += 1;
    rs.Update(colour);

    if(gameEvent.type == sf::Event::Closed)
        quit = true;

    rs.Canvas.clear( sf::Color(colour,0,0) );

    rs.Canvas.draw( sprite );

    rs.Canvas.display();

    if(colour >= 300)
        quit = true;
}
rs.Canvas有这些设置

Canvas.setVerticalSyncEnabled(true);
Canvas.setFramerateLimit(60);

有人能看到为什么我的renderWindow会闪烁吗?

来自SFML 2.0教程,在“控制帧速率”部分下:

切勿同时使用setVerticalSyncEnabled和setFramerateLimit!他们会混为一谈,让事情变得更糟


在你帖子的评论中,你说你在窗口上两次呼叫clear。这将有效地将窗口视为单缓冲窗口。我知道这可能会造成一些屏幕撕裂,但在我这方面,我没有得到一个耀眼的闪烁效果。请确保删除您的设置,或者调用设置帧速率或使用垂直同步,以确保。

基本上我是在打电话

rs.Canvas.clear

两次。我删除了第二个调用,然后一切都正常了

我不熟悉SFML,但是在绘制之前清除画布是否会导致闪烁?或者是
Canvas.display()。现在可以了,删除问题:)你能添加解决方案作为实际答案并接受它,这样问题就会被标记为已解决吗?