2013-11-15 12 views
0

Я надеюсь, что кто-то может мне помочь, я использую SFML 2.1, и когда я рисую свой рендеринг, он просто мерцает, теперь я знаю, что SFML использует два буфера, поэтому я уверен, что никто не рисует вообще, но я не могу понять, почему.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 будет мерцать?

+0

Я не знаком с SFML, но может ли это быть вызвано тем, что вы очищаете холст, прежде чем рисовать его? Или это 'Canvas.display()', который на самом деле рисует его на экране? –

+0

В порядке, я просмотрел код, и я обнаружил, что дважды использовал Canvas.clear(), поэтому в основном он очищал передний буфер и задний буфер, поэтому он никогда не устанавливался. его штраф сейчас, удалите вопрос :) – Canvas

+0

Не могли бы вы добавить решение в качестве фактического ответа и принять его, поэтому вопрос будет отмечен как решенный? – Lukas

ответ

0

В основном я звоню

rs.Canvas.clear 

дважды. Я удалил второй вызов, и все, после чего работало нормально

1

Из учебника SFML 2.0, в разделе Управление фреймрейт:

Никогда не используйте как setVerticalSyncEnabled и setFramerateLimit в то же время! Они плохо смешивались и делали хуже.

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

В комментариях к сообщению, вы заявляете, что вы звонили ясно дважды в окне. Это эффективно обрабатывало бы ваше окно, как если бы оно было одно буферизировано. Я понимаю, что эффект от этого может привести к разрыву экрана, но с моей стороны я не получаю вопиющего эффекта мерцания. Обязательно удалите свой вызов либо для установки частоты кадров, либо для использования вертикальной синхронизации, чтобы быть уверенным.

Смежные вопросы