저는 지난 주 내 게임의 핵심을 만들어 왔으며 렌더링이 단순히 충분하지 않았기 때문에 저는 벽을 때렸습니다. 운동은 육포적이었고, 나는 찢어지고 있었고 일반적으로 많은 지체가있었습니다. 그것을 다시 반복 증가,SFML 렌더링 성능 문제
이 sf::RenderWindow window(sf::VideoMode(1024, 768), "Testing");
window.setVerticalSyncEnabled(true);
sf::Clock clock;
sf::Event event;
float elapsed;
while(window.isOpen())
{
elapsed += clock.restart().asSeconds();
std::cout << 1.f/elapsed << std::endl;
while(elapsed > 1.f/60.f)
{
while(window.pollEvent(event))
{
if (event.type == sf::Event::Closed || event.key.code == sf::Keyboard::Escape)
{
window.close();
}
}
elapsed -= 1.f/60.f;
}
window.clear();
window.display();
}
FPS에는 40에서 시작하여 60까지 이동 한 후 다시 30 폭포 : 나는 매우 간단한 gameloop 렌더링 테스트 그래서 내 게임 엔진의 잘못되지 않을 수 있다고 생각 . VSynct를 false로 설정하면 30-500 fps 사이의 아무 곳이나 구할 수 있습니다. 프레임 속도를 올바르게 테스트하지 않거나 내 nvidia 드라이버에 문제가 있습니다 (변경없이 2 번 재설치했습니다). 어떤 도움을 주셔서 감사합니다!
나는 왜 'elapsed - = 1.f/60.f ;'. 그 뒤에있는 논리는 무엇입니까? 나는 왜 당신이 일정한 것을 빼는 지 알지 못한다. – luk32
이것을 확인하십시오. http://gameprogrammingpatterns.com/game-loop.html – Veritas