Созданные ответы форума
-
АвторСообщения
-
Проблема решилась, когда
C++1*.setFont(font);вынес за пределы конструктора.
Теперь в update() один раз вызывается:
C++12345678void setFont(){int i;for(i = 0; i < texts.size()-1; i++){texts[i].setFont(font);}}Решение не самое лучшее, может кто знает более лаконичное?
Ну и чтобы по теме ответить, замерил нагрузку. При FPS 2500 у меня нагрузка ~50%
Сделал так:
C++1window.setFramerateLimit(30);…и нагрузка ~5%
Заранее извиняюсь, что подымаю старую тему, но появилось что сказать по этой теме. Я не измерял нагрузку на ЦП, у меня была проблема другого характера – очень низкий FPS. Причём на аналоичном тестовом коде. Я заметил, что при движении мышкой по окну FPS проседал вплодь до 0,5! Покопавшись, таки нашёл причину. Вот это место:
C++1234while(window.pollEvent(event)){if(event.type == sf::Event::Closed)window.close();}Если я правильно разобрался, то мы отлавливаем все события, а обрабатываем только закрытие окна. Но этот цикл не даёт продолжить, пока все события не будут обработаны. Возможно такая проблема только у меня. (Я программирую под Linux) В моём случае просто заменил на этот код:
C++12if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))window.close();FPS поднялся до 2500. Но окно теперь закрывается только по Escape, хотя в случае моей “игры” это не критично.
Если кто с подобным сталкивался и нашёл более лаконичное решение, напишите.
-
АвторСообщения