C++ SFML闪烁的渲染窗口?
我希望有人能帮助我,我使用的是SFML2.1,当我绘制我的渲染窗口时,它一直在闪烁,现在我知道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;
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()。现在可以了,删除问题:)你能添加解决方案作为实际答案并接受它,这样问题就会被标记为已解决吗?