fps和动画间隔的意义
60.0fps
为什么要不停的刷新屏幕。
没有更新也要刷新屏幕 ? fps 意义何在。
刚学习游戏需多地方不明白
fps 的意义是用来体现画面流畅度的,较高的 fps 能减少闪烁,以及提供更多的运动细节。
你见过古老的电影放映机吗?放映机的电动机匀速转动,按照固定时间间隔将下一个胶片投射到银幕上,如果因为连续多个画面是相同的,电动机就停止转动,那么你就必须在原始的胶片上给静止画面标注,并且要注明多长时间内始终投射此画面。但是放映机不是这么做的,而是将同一画面复制到连续的多张胶片上,这样电动机还是照样转,其工作模式不用更改,而制作胶片的人也不用为胶片做标注。这样事情就简单了,实际使用中你会发现,静止画面是相当少的,为了小概率发生事件去增加复杂的控制机制是得不偿失的。
谢谢你的回答,
还是不能贯穿起来
但是平滑卷轴技术,就是为了不重复绘制背景而开发出来的技术。
既然这样。fps越快不是越卡吗
指教一下高人~~~
@~五百年~: 要不这样吧,不能总是我写的多,你写的少,你先把动画的执行流程给我说一遍,并告诉我是如何体现出 FPS 的。
@Launcher: 嗯,我说一下我理解的动画~
位置动画 从位置 x1-x60 fps是60 就执行绘制动作60次
形态动画 如果只有20张 fps是20 就执行绘制动作20次
..
@~五百年~: 错,FPS 全称叫着:Frames Per Second。跟你有多少张没关系,而是 1 秒内显示了多少帧。来,先看下解释:http://baike.baidu.com/subview/26953/10723700.htm,然后你再说说,为什么 FPS 高了,会越卡?
@Launcher:
是呀~~ 既然fps是Frames Per Second 只有20张图片的时候我fps调到20不是更好吗. ???
还有就是
一般精灵的动画fps和游戏主循环的fps是怎么绘制的~
@~五百年~: 如果你只有 20 张,那么实际的 FPS 最高可能就是 20 (你必须注意到 FPS 是个测量的结果,不是你一开始控制出来的,明白这个道理吗?),但不一定就是 20 ,因为你 20 张中某些绘制较慢,那么实际的 FPS 就会低于 20。比如常见的 FPS 游戏,如果你打开帧数显示的话,它的帧数是变化的,而不是一个固定值,特别是到了复杂的渲染场景(比如雾霾,雨天,海水,碰撞等),或是需要高速运动的物体时,帧数就会显著下降。不是说我把帧数设置为 60 ,整个游戏就会一直以 60 桢来运行。甚至系统中其它一个程序的运行也会影响到实际的帧数,比如长时间的磁盘读写,高清视频的播放等等。
@Launcher:
就是说比如一个显示他的GPU能力是200fps
在游戏中我定义一个60fps
如果游戏就一个背景图~ 他每秒钟还是要重绘60次。
如果游戏中有一个耗时的逻辑操作可能花1秒 那么他每秒钟只有1次.
@~五百年~: 你使用的是GDI,GDI+, DirectX ,还是 OpenGL?请你给我解释下你这里的“重绘”在它们中的含义是什么?
@Launcher:
我理解的就是clear 和 fill 。
还是这其中有缓存技术???? 请指教 。
@~五百年~:
比如一个场景。
里面有精灵和文字等。
先删掉。
然后再重新画一次。
??
@~五百年~: 你使用的是GDI,GDI+, DirectX ,还是 OpenGL?
@Launcher:
我在看cocos2d 他好像使用的openGL
@~五百年~: 你最好把你的逻辑写一遍,比如你有个主循环,每隔 1 秒掉用一次绘制代码,然后刷新到显式区。假设此绘制代码能够在极短时间内完成,那么你的实际帧数就是 1 。
@Launcher:
谢谢你的回答。~~ 太热心了》~
@~五百年~: cocos2d 也使用 DirectX,这么看来你应该会编写使用 OpenGL 程序,那这就简单了,你还得看我最开始讲的电影放映的流程,这个流程就是动画的基础结构,如果你的动画变化很多很快,或者需要体现更多的运动细节,你就可以把发动机调快一点,如果你的动画不要求很高的运动细节,你就可以把发动机调慢一点,同时你也可以在绘制时控制是否重新绘制,以及是否把缓冲区刷新到显示区。平滑卷轴解决的问题是如何快速的绘制下一帧,并不控制此帧什么时候开始绘制。