我希望有人可以帮助我,我使用的是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/