帧率限制 与 FPS显示
2017-06-24 14:45
239 查看
int CApp::OnExecute() { // Initialize application. int state = OnInit(); if (state != APP_OK) { return state; } // Enter the SDL event loop. SDL_Event event; running = true; fps = true; static int last_time = 0; static int real_FPS; static int good_FPS; int show_fps_flag = 0; while (running) { while (SDL_PollEvent(&event)) { OnEvent(&event); } if (SDL_GetTicks() - last_time != 0) { real_FPS = 1000 / (SDL_GetTicks() - last_time); good_FPS = real_FPS / 20 + good_FPS * 19 / 20; } else { real_FPS = 1000; good_FPS = 50 + good_FPS * 19 / 20; } if(real_FPS <= FPS) { last_time = SDL_GetTicks(); if (fps == true) { if(real_FPS != 0) { if(show_fps_flag++ * 10 / real_FPS != 0) { printf("FPS:%d\n", good_FPS); show_fps_flag = 0; } } else { printf("FPS:%d\n", good_FPS); show_fps_flag = 0; } } OnUpdate(); OnRender(); } } return state; }
对事件操作不限制FPS,对Update和Rander每帧更新。
本来想显示在窗口左上角,无奈SDL扩展库ttf还没有弄清楚如何在 osX 上实现,暂时先显示在输出端。
由于都是用 int 计算,所以真·FPS的数值分布是1000,500,333,250,200,166......非常难受,所以我使用了均值抹匀了FPS,使其看起来不会跳得太快,又因为每帧都显示看起来太瞎眼,所以设定为每10帧显示一次。
防止除数为零,做了if else判断。
相关文章推荐
- 显示游戏FPS帧率的几种计算方式
- Unity3D显示帧率以及设置不限制帧率
- Unity3D显示帧率以及设置不限制帧率
- Unity 帧率设置和显示FPS脚本
- unity3D显示帧率FPS的脚本
- 视频码率(Bitrate), 帧率(FPS)和分辨率的联系与区别
- [SharePoint 2010] 限制页面字符显示长度
- opencv播放视频实时显示帧速(FPS),即是每秒帧数
- mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系
- windows xp显示本地连接受限制,无法连接网络
- dede限制标题长度后,鼠标移到标题,不显示完整的锚文本标题解决方法
- 使用mysql-front的时候遇到显示:程序注册时间到期程序将被限制模式下运行
- Unity3d 帧率设置 及在游戏运行时显示帧率
- td 显示字体的数量限制
- 限制换行显示
- [iOS] 显示 FPS 值在 iOS 状态栏的小东西
- TextWatcher详解,限制输入字符,实现文本框输入框同步,TextView与EditText同步显示
- 使easyui中combobox限制显示的数量以提升效率(修改源码)
- 局域网个别电脑无法上网,显示本地连接受限制,无法连接网络的部分解决方法
- JQERY limittext 插件0.2版(长内容限制显示)