使用 sfml 计算 FPS
Calculate FPS with sfml
这个问题与sfml中的主循环无关。如何计算实际帧速率(例如,我启用了垂直同步,但主循环仍然高速运行(,以便它实际显示屏幕的更新速度(而不是主循环的速度(。测量主循环速度对我来说并不重要,但实际的窗口更新速度很重要。
SFML没有提供一种检索当前帧速率的方法,也没有像OpenGL那样的后端。因此,唯一的方法是按照您的建议监控主回路速度。
此外,60Hz 显示器上的window.setFrameLimit(60)
或window.setVerticalSyncEnabled(true)
或内部环路sleep
在我的 SFML 应用程序中会产生相同的效果,V-Sync 的差异是 CPU 和 GPU 更昂贵(由于它们的同步方式(。 因此,您可以依靠使用chrono
例如在主循环中计算 FPS。
确保使用time_point
将draw
呼叫包装为start
和end
点,并计算使用std::chrono::time_duration
经过的时间。
例:
std::chrono::high_resolution_clock::time_point start;
std::chrono::high_resolution_clock::time_point end;
float fps;
while(window.isOpen()){
// Perform some non-rendering logic there...
// Performed. Now perform GPU stuff...
start = std::chrono::high_resolution_clock::now();
// window.draw, etc.
end = std::chrono::high_resolution_clock::now();
fps = (float)1e9/(float)std::chrono::duration_cast<std::chrono::nanoseconds>(end-start).count());
}
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 使用 sfml 计算 FPS
- 如何使用opencv计算视频的fps(带处理)
- C 通过钩住称为每个帧的函数来计算fps
- 每台计算机上的 SDL 2.0 恒定 FPS
- 如何使用Chrono和OpenCV计算实时视频流的FPS
- 我的FPS计算正确吗?