我希望有人可以帮助我,我使用的是SFML 2.1,当我绘制renderWindow时,它一直闪烁,现在我知道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教程的“控制帧速率”部分下:



http://www.sfml-dev.org/tutorials/2.0/window-window.php#controlling-the-framerate

在您的帖子评论中,您声明您在窗口中两次调用clear。这将有效地将您的窗口当作是单个缓冲的窗口。我知道这种效果可能会造成屏幕撕裂,但最终我没有得到明显的闪烁效果。请务必确保取消设置帧率或使用垂直同步的 call 。

关于c++ - SFML闪烁的渲染窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20012283/

10-11 22:50
查看更多