setFramerateLimit() 函数在 sfml 中不起作用
setFramerateLimit() function not working in sfml
我正在尝试学习SFML,我想限制帧速率。 这是我的代码:-
#include <iostream>
#include <SFML/Graphics.hpp
int main()
{
sf::Window win (sf::VideoMode(200,200),"SDSDefgwre");
sf::Clock clock;
win.setFramerateLimit(30);
sf::Time t;
while(win.isOpen())
{
sf::Event e;
clock.restart().asSeconds();
while(win.pollEvent(e))
{
if(e.type == sf::Event::Closed)
win.close();
}
t = clock.getElapsedTime();
std::cout << 1.f/t.asSeconds() <<'n';
}
return 0;
}
在我运行此代码的地方,我得到 200000 FPS。
这意味着win.setFramerateLimit(60);
不工作。请告诉我哪里出了问题?
来自setFrameLimit
的文档:
如果设置了限制,则窗口将在每次调用后使用较小的延迟
display()
以确保当前帧持续足够长的时间 匹配帧速率限制。
您不渲染任何内容,也从未实际交换绘制缓冲区(这是调用win.display()
会执行的操作(。
问题是你没有打电话
win.display()
因为窗口在显示功能中等待框架。
你的代码应该看起来像这样
#include <iostream>
#include <SFML/Graphics.hpp>
int main()
{
sf::Window win(sf::VideoMode(200, 200), "SDSDefgwre");
sf::Clock clock;
win.setFramerateLimit(30);
sf::Time t;
while (win.isOpen())
{
sf::Event e;
clock.restart().asSeconds();
while (win.pollEvent(e))
{
if (e.type == sf::Event::Closed)
win.close();
}
win.display();
t = clock.getElapsedTime();
std::cout << 1.0 / t.asSeconds() << 'n';
}
return 0;
}
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- setFramerateLimit() 函数在 sfml 中不起作用
- SFML 加载从文件不起作用,奇怪的错误
- CodeBlocks中的SFML项目不起作用
- SFML - 键事件不起作用
- 第 4 个射击语句在 SFML 游戏中不起作用
- SFML教程甚至不起作用
- SFML 通过构造函数获取另一个类的窗口不起作用
- SFML 使用结构发送数据包不起作用
- SFML C++ - 用于制作基本窗口的代码在划分时不起作用