关于游戏画面顿卡卡的问题

iOS&界面卡顿现象的元凶和优化方案_划水的麻瓜_新浪博客
iOS&界面卡顿现象的元凶和优化方案
1屏幕显示图像的原理
​首先从过去的 CRT
显示器原理说起。CRT
的电子枪按照上面方式,从上到下一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描。为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬件)会用硬件时钟产生一系列的定时信号。当电子枪换到新的一行,准备进行扫描时,显示器会发出一个水平同步信号(horizonal
synchronization),简称
HSync;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(vertical
synchronization),简称 VSync。显示器通常以固定频率进行刷新,这个刷新率就是 VSync
信号产生的频率。尽管现在的设备大都是液晶显示屏了,但原理仍然没有变。
通常来说,计算机系统中 CPU、GPU、显示器是以上面这种方式协同工作的。CPU 计算好显示内容提交到 GPU,GPU
渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync
信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。
在最简单的情况下,帧缓冲区只有一个,这时帧缓冲区的读取和刷新都都会有比较大的效率问题。为了解决效率问题,显示系统通常会引入两个缓冲区,即双缓冲机制。在这种情况下,GPU
会预先渲染好一帧放入一个缓冲区内,让视频控制器读取,当下一帧渲染好后,GPU
会直接把视频控制器的指针指向第二个缓冲器。如此一来效率会有很大的提升。
双缓冲虽然能解决效率问题,但会引入一个新的问题。当视频控制器还未读取完成时,即屏幕内容刚显示一半时,GPU
将新的一帧内容提交到帧缓冲区并把两个缓冲区进行交换后,视频控制器就会把新的一帧数据的下半段显示到屏幕上,造成画面撕裂现象,如下图:
​为了解决这个问题,GPU 通常有一个机制叫做垂直同步(简写也是
V-Sync),当开启垂直同步后,GPU 会等待显示器的 VSync
信号发出后,才进行新的一帧渲染和缓冲区更新。这样能解决画面撕裂现象,也增加了画面流畅度,但需要消费更多的计算资源,也会带来部分延迟。
2卡顿产生的原因和解决方案
在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU
中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU
进行变换、合成、渲染。随后 GPU 会把渲染结果提交到帧缓冲区去,等待下一次 VSync
信号到来时显示到屏幕上。由于垂直同步的机制,如果在一个 VSync 时间内,CPU 或者 GPU
没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示屏会保留之前的内容不变。这就是界面卡顿的原因。
从上面的图中可以看到,CPU 和 GPU 不论哪个阻碍了显示流程,都会造成掉帧现象。所以开发时,也需要分别对 CPU 和 GPU
压力进行评估和优化。
CPU 资源消耗原因和解决方案
​对象创建
对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU
资源。尽量用轻量的对象代替重量的对象,可以对性能有所优化。比如 CALayer 比 UIView
要轻量许多,那么不需要响应触摸事件的控件,用 CALayer 显示会更加合适。如果对象不涉及 UI
操作,则尽量放到后台线程去创建,但可惜的是包含有 CALayer 的控件,都只能在主线程创建和操作。通过 Storyboard
创建视图对象时,其资源消耗会比直接通过代码创建对象要大非常多,在性能敏感的界面里,Storyboard
并不是一个好的技术选择。
尽量推迟对象创建的时间,并把对象的创建分散到多个任务中去。尽管这实现起来比较麻烦,并且带来的优势并不多,但如果有能力做,还是要尽量尝试一下。如果对象可以复用,并且复用的代价比释放、创建新对象要小,那么这类对象应当尽量放到一个缓存池里复用。
对象的调整也经常是消耗 CPU 资源的地方。这里特别说一下 CALayer:CALayer
内部并没有属性,当调用属性方法时,它内部是通过运行时&resolveInstanceMethod
为对象临时添加一个方法,并把对应属性值保存到内部的一个 Dictionary 里,同时还会通知
delegate、创建动画等等,非常消耗资源。UIView 的关于显示相关的属性(比如
frame/bounds/transform)等实际上都是 CALayer 属性映射来的,所以对 UIView
的这些属性进行调整时,消耗的资源要远大于一般的属性。对此你在应用中,应该尽量减少不必要的属性修改。
当视图层次调整时,UIView、CALayer
之间会出现很多方法调用与通知,所以在优化性能时,应该尽量避免调整视图层次、添加和移除视图。
对象的销毁虽然消耗资源不多,但累积起来也是不容忽视的。通常当容器类持有大量对象时,其销毁时的资源消耗就非常明显。同样的,如果对象可以放到后台线程去释放,那就挪到后台线程去。这里有个小
Tip:把对象捕获到 block 中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在后台线程销毁了。
视图布局的计算是 App 中最为常见的消耗 CPU
资源的地方。如果能在后台线程提前计算好视图布局、并且对视图布局进行缓存,那么这个地方基本就不会产生性能问题了。
不论通过何种技术对视图进行布局,其最终都会落到对 UIView.frame/bounds/center
等属性的调整上。上面也说过,对这些属性的调整非常消耗资源,所以尽量提前计算好布局,在需要时一次性调整好对应属性,而不要多次、频繁的计算和调整这些属性。
Autolayout
Autolayout 是苹果本身提倡的技术,在大部分情况下也能很好的提升开发效率,但是 Autolayout
对于复杂视图来说常常会产生严重的性能问题。随着视图数量的增长,Autolayout 带来的 CPU
消耗会呈指数级上升。具体数据可以看这个文章:http://pilky.me/36/
。 如果你不想手动调整 frame 等属性,你可以用一些工具方法替代(比如常见的
left/right/top/bottom/width/height 快捷属性),或者使用
ComponentKit、AsyncDisplayKit 等框架。
如果一个界面中包含大量文本(比如微博微信朋友圈等),文本的宽高计算会占用很大一部分资源,并且不可避免。如果你对文本显示没有特殊要求,可以参考下
UILabel 内部的实现方式:用 [NSAttributedString
boundingRectWithSize:options:context:] 来计算文本宽高,用
-[NSAttributedString drawWithRect:options:context:]
来绘制文本。尽管这两个方法性能不错,但仍旧需要放到后台线程进行以避免阻塞主线程。
如果你用 CoreText 绘制文本,那就可以先生成 CoreText 排版对象,然后自己计算了,并且 CoreText
对象还能保留以供稍后绘制使用。
屏幕上能看到的所有文本内容控件,包括 UIWebView,在底层都是通过 CoreText 排版、绘制为 Bitmap
显示的。常见的文本控件 (UILabel、UITextView 等),其排版和绘制都是在主线程进行的,当显示大量文本时,CPU
的压力会非常大。对此解决方案只有一个,那就是自定义文本控件,用 TextKit 或最底层的 CoreText
对文本异步绘制。尽管这实现起来非常麻烦,但其带来的优势也非常大,CoreText
对象创建好后,能直接获取文本的宽高等信息,避免了多次计算(调整 UILabel 大小时算一遍、UILabel
绘制时内部再算一遍);CoreText 对象占用内存较少,可以缓存下来以备稍后多次渲染。
图片的解码
当你用 UIImage 或 CGImageSource 的那几个方法创建图片时,图片数据并不会立刻解码。图片设置到
UIImageView 或者 CALayer.contents 中去,并且 CALayer 被提交到 GPU 前,CGImage
中的数据才会得到解码。这一步是发生在主线程的,并且不可避免。如果想要绕开这个机制,常见的做法是在后台线程先把图片绘制到
CGBitmapContext 中,然后从 Bitmap 直接创建图片。目前常见的网络图片库都自带这个功能。
图像的绘制
图像的绘制通常是指用那些以 CG 开头的方法把图像绘制到画布中,然后从画布创建图片并显示这样一个过程。这个最常见的地方就是
[UIView drawRect:] 里面了。由于 CoreGraphic
方法通常都是线程安全的,所以图像的绘制可以很容易的放到后台线程进行。一个简单异步绘制的过程大致如下(实际情况会比这个复杂得多,但原理基本一致):
GPU 资源消耗原因和解决方案
相对于 CPU 来说,GPU
能干的事情比较单一:接收提交的纹理(Texture)和顶点描述(三角形),应用变换(transform)、混合并渲染,然后输出到屏幕上。通常你所能看到的内容,主要也就是纹理(图片)和形状(三角模拟的矢量图形)两类。
纹理的渲染
所有的 Bitmap,包括图片、文本、栅格化的内容,最终都要由内存提交到显存,绑定为 GPU
Texture。不论是提交到显存的过程,还是 GPU 调整和渲染 Texture 的过程,都要消耗不少 GPU
资源。当在较短时间显示大量图片时(比如 TableView 存在非常多的图片并且快速滑动时),CPU 占用率很低,GPU
占用非常高,界面仍然会掉帧。避免这种情况的方法只能是尽量减少在短时间内大量图片的显示,尽可能将多张图片合成为一张进行显示。
当图片过大,超过 GPU 的最大纹理尺寸时,图片需要先由 CPU 进行预处理,这对 CPU 和 GPU
都会带来额外的资源消耗。目前来说,iPhone 4S 以上机型,纹理尺寸上限都是
,更详细的资料可以看这里:。所以,尽量不要让图片和视图的大小超过这个值。
视图的混合 (Composing)
当多个视图(或者说 CALayer)重叠在一起显示时,GPU
会首先把他们混合到一起。如果视图结构过于复杂,混合的过程也会消耗很多 GPU 资源。为了减轻这种情况的 GPU
消耗,应用应当尽量减少视图数量和层次,并在不透明的视图里标明 opaque 属性以避免无用的 Alpha
通道合成。当然,这也可以用上面的方法,把多个视图预先渲染为一张图片来显示。
图形的生成
CALayer 的 border、圆角、阴影、遮罩(mask),CASharpLayer
的矢量图形显示,通常会触发离屏渲染(offscreen rendering),而离屏渲染通常发生在 GPU
中。当一个列表视图中出现大量圆角的 CALayer,并且快速滑动时,可以观察到 GPU 资源已经占满,而 CPU
资源消耗很少。这时界面仍然能正常滑动,但平均帧数会降到很低。为了避免这种情况,可以尝试开启
CALayer.shouldRasterize 属性,但这会把原本离屏渲染的操作转嫁到 CPU
上去。对于只需要圆角的某些场合,也可以用一张已经绘制好的圆角图片覆盖到原本视图上面来模拟相同的视觉效果。最彻底的解决办法,就是把需要显示的图形在后台线程绘制为图片,避免使用圆角、阴影、遮罩等属性。
当获取到 API JSON 数据后,我会把每条 Cell 需要的数据都在后台线程计算并封装为一个布局对象
CellLayout。CellLayout 包含所有文本的 CoreText 排版结果、Cell 内部每个控件的高度、Cell
的整体高度。每个 CellLayout 的内存占用并不多,所以当生成后,可以全部缓存到内存,以供稍后使用。这样,TableView
在请求各个高度函数时,不会消耗任何多余计算量;当把 CellLayout 设置到 Cell 内部时,Cell
内部也不用再计算布局了。
对于通常的 TableView
来说,提前在后台计算好布局结果是非常重要的一个性能优化点。为了达到最高性能,你可能需要牺牲一些开发速度,不要用 Autolayout
等技术,少用 UILabel 等文本控件。但如果你对性能的要求并不那么高,可以尝试用 TableView 的预估高度的功能,并把每个
高度缓存下来。这里有个来自百度知道团队的开源项目可以很方便的帮你实现这一点:FDTemplateLayoutCell。
3性能优化技巧
头像在某次改版中换成了圆形,所以我也跟进了一下。当头像下载下来后,我会在后台线程将头像预先渲染为圆形并单独保存到一个
ImageCache 中去。
对于 TableView 来说,Cell 内容的离屏渲染会带来较大的 GPU 消耗。我为了图省事儿用到了不少 layer
的圆角属性,你可以在低性能的设备上快速滑动一下这个列表,能感受到虽然列表并没有较大的卡顿,但是整体的平均帧数降了下来。用
Instument 查看时能够看到 GPU 已经满负荷运转,而 CPU 却比较清闲。为了避免离屏渲染,你应当尽量避免使用 layer
的 border、corner、shadow、mask 等技术,而尽量在后台线程预先绘制好对应内容。&
我只在显示文本的控件上用到了异步绘制的功能,但效果很不错。我参考 ASDK
的原理,实现了一个简单的异步绘制控件。AsyncLayer 是
CALayer 的子类,当它需要显示内容(比如调用了 [layer setNeedDisplay])时,它会向
delegate,也就是 UIView 请求一个异步绘制的任务。在异步绘制时,Layer
会传递一个BOOL(^isCancelled)()&这样的 block,绘制代码可以随时调用该
block 判断绘制任务是否已经被取消。
当 TableView
快速滑动时,会有大量异步绘制任务提交到后台线程去执行。但是有时滑动速度过快时,绘制任务还没有完成就可能已经被取消了。如果这时仍然继续绘制,就会造成大量的
资源浪费,甚至阻塞线程并造成后续的绘制任务迟迟无法完成。我的做法是尽量快速、提前判断当前绘制任务是否已经被取消;在绘制每一行文本前,我都会调用
isCancelled() 来进行判断,保证被取消的任务能及时退出,不至于影响后续操作。
目前有些第三方微博客户端(比如 VVebo、墨客等),使用了一种方式来避免高速滑动时 Cell
的绘制过程,相关实现见这个项目:VVeboTableViewDemo
。它的原理是,当滑动时,松开手指后,立刻计算出滑动停止时 Cell 的位置,并预先绘制那个位置附近的几个
Cell,而忽略当前滑动中的
Cell。这个方法比较有技巧性,并且对于滑动性能来说提升也很大,唯一的缺点就是快速滑动中会出现大量空白内容。如果你不想实现比较麻烦的异步绘制但又想保证滑动的流畅性,这个技巧是个不错的选择。
更高效的异步图片加载
在显示简单的单张图片时,利用 UIView.layer.contents 就足够了,没必要使用 UIImageView
带来额外的资源消耗,为此我在 CALayer 上添加了 setImageWithURL
等方法。除此之外,我还把图片解码等操作通过DispatchQueuePool 进行管理,控制了 App
总线程数量。&​
如何评测界面的流畅度
最后还是要提一下,“过早的优化是万恶之源”,在需求未定,性能问题不明显时,没必要尝试做优化,而要尽量正确的实现功能。做性能优化时,也最好是走修改代码
-& Profile -&
修改代码这样一个流程,优先解决最值得优化的地方。
用 Instuments 的 GPU Driver 预设,能够实时查看到 CPU 和 GPU
的资源消耗。在这个预设内,你能查看到几乎所有与显示有关的数据,比如 Texture 数量、CA 提交的频率、GPU
消耗等,在定位界面卡顿的问题时,这是最好的工具。
划水的麻瓜
博客等级:
博客积分:0
博客访问:1,143
关注人气:0
荣誉徽章:查看: 12017|回复: 25
彻底解决皇牌空战7顿卡和画面撕裂问题!!!
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
本帖最后由 ☆弑魂 于
01:08 PM 编辑
由于皇牌空战7是主机强行移植过来的原因,所以大部分玩家有顿卡或者画面撕裂问题,在这里我说下解决方法!!!
第一步:如果是N卡就运行Nvidia控制面板→管理3D设置→三重缓冲开启。A卡同样原理!!!
第二步:然后运行游戏,在图像设置里打开垂直同步!!!
完成以上2步,完美解决皇牌空战7顿卡和画面撕裂问题!!!请一定要在游戏里开启垂直同步,不然开启三重缓冲无效!!!
帖子主题积分
游民步兵, 积分 138, 距离下一级还需 362 积分
游民步兵, 积分 138, 距离下一级还需 362 积分
金钱340 ¥
魅力355 点
在线时间29 小时
其实我关了垂直同步才没有顿卡问题
帖子主题积分
游民平民, 积分 31, 距离下一级还需 69 积分
游民平民, 积分 31, 距离下一级还需 69 积分
在线时间6 小时
其实三级缓冲一直开着 ,但是依然卡顿,难道要先开游戏再开三级缓冲?&&
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
<font color="#5947050 发表于
其实三级缓冲一直开着 ,但是依然卡顿,难道要先开游戏再开三级缓冲?
你三重缓冲开了,你在游戏里开启了垂直同步吗?
帖子主题积分
游民平民, 积分 31, 距离下一级还需 69 积分
游民平民, 积分 31, 距离下一级还需 69 积分
在线时间6 小时
☆弑魂 发表于
你三重缓冲开了,你在游戏里开启了垂直同步吗?
帖子主题积分
游民平民, 积分 31, 距离下一级还需 69 积分
游民平民, 积分 31, 距离下一级还需 69 积分
在线时间6 小时
<font color="#5947050 发表于
对了 该不是版本问题吧 我下的免安装版&&
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
<font color="#5947050 发表于
对了 该不是版本问题吧 我下的免安装版
不是版本问题
帖子主题积分
游民平民, 积分 69, 距离下一级还需 31 积分
游民平民, 积分 69, 距离下一级还需 31 积分
金钱185 ¥
魅力293 点
在线时间24 小时
LZ你说的我都弄了。。。我是每次进游戏&&玩一关不卡 等进入下一关或者下一个场景时&&按W什么的就开始卡了。。。。。这怎么破?
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
zmyself 发表于
LZ你说的我都弄了。。。我是每次进游戏&&玩一关不卡 等进入下一关或者下一个场景时&&按W什么的就开始卡了。 ...
你有可能在游戏按了Ctrl+空格键,把输入法按出来了,这个问题你只要在游戏里按Caps Lock开启大写就可以了!!!
帖子主题积分
游民平民, 积分 31, 距离下一级还需 69 积分
游民平民, 积分 31, 距离下一级还需 69 积分
在线时间6 小时
☆弑魂 发表于
你有可能在游戏按了Ctrl+空格键,把输入法按出来了,这个问题你只要在游戏里按Caps Lock开启大写就可以了 ...
焕然大悟,开枪的同时开炮&&把输入法给弄出来了&&苦逼了几天
帖子主题积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
金钱2820 ¥
魅力2990 点
星座双鱼座
在线时间263 小时
<font color="#5947050 发表于
焕然大悟,开枪的同时开炮&&把输入法给弄出来了&&苦逼了几天
看到楼主这么说,我倒是也想起来啦 我在游戏里追击敌机的时候 也是空格键和chtrl键一起按的 机炮+导弹一起招呼 我说我怎么在加速的时候 老是悲剧出现顿卡 不过话说 游戏里边敌机 老是转 转的我的头都晕啦 然后就会被锁定 接着就是导弹来袭警告不停的出现 还特别难甩掉 唉 真是郁闷 哪 要不就是在我锁定敌机的同时 我自己也就同时成为靶子&&
帖子主题积分
游民平民, 积分 31, 距离下一级还需 69 积分
游民平民, 积分 31, 距离下一级还需 69 积分
在线时间6 小时
多简单&&我倒是希望敌机赶紧来追我 ,你可以减速反咬&&,省了我去追
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
<font color="#5947050 发表于
焕然大悟,开枪的同时开炮&&把输入法给弄出来了&&苦逼了几天
呵呵& && && && && && && && && && && &&&
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
游戏痴迷 发表于
看到楼主这么说,我倒是也想起来啦 我在游戏里追击敌机的时候 也是空格键和chtrl键一起按的 机炮+导弹一起 ...
呵呵,其实皇牌空战7很简单,如果被敌机咬住,敌机用机炮扫射你的时候,你按S减速,等到屏幕中间一个绿色的箭头和一个红色的箭头重叠的时候,然后屏幕中间会出现一个C字母,这时候你按C键就可以实现反机动,你就绕道敌人后面去了!!!
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
游戏痴迷 发表于
看到楼主这么说,我倒是也想起来啦 我在游戏里追击敌机的时候 也是空格键和chtrl键一起按的 机炮+导弹一起 ...
如果被导弹锁定,也很简单,按S减速,然后按任意方向键就可以实现高机动飞行,就甩掉导弹了!!!
帖子主题积分
游民平民, 积分 9, 距离下一级还需 91 积分
游民平民, 积分 9, 距离下一级还需 91 积分
在线时间0 小时
都试过了,依然不稳定啊!随时会卡!有救么
帖子主题积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
金钱2820 ¥
魅力2990 点
星座双鱼座
在线时间263 小时
☆弑魂 发表于
呵呵,其实皇牌空战7很简单,如果被敌机咬住,敌机用机炮扫射你的时候,你按S减速,等到屏幕中间一个绿色 ...
这个我知道 对付普通AI驾驶的战机这招很好使 但是对战王牌这招就不那么好使啦 每次把我绕的头都快晕啦
还容易咬住王牌敌机啦 自己背后就又会飞过来一堆导弹和机炮 还有我的哪些傻瓜加白痴的队友 要不是因为我实在是被敌机追的腾不出手 也实在是没功夫 我一定会去请他们品尝 导弹宴&&什么事都得我干 光是这我也就认啦 可是居然连一架敌机都不舍得打 全都留给我 害得我每次 都被一群敌机追的满地图跑 还要腾空手 按F键 放干扰弹 不然的话 就会不停的闪烁提示 导弹来袭&&然后我驾驶的F18超级大黄蜂 就成了活靶子
帖子主题积分
游民步兵, 积分 274, 距离下一级还需 226 积分
游民步兵, 积分 274, 距离下一级还需 226 积分
金钱311 ¥
魅力1044 点
在线时间134 小时
游戏痴迷 发表于
这个我知道 对付普通AI驾驶的战机这招很好使 但是对战王牌这招就不那么好使啦 每次把我绕的头都快 ...
呵呵,王牌战机我觉得也很简单了,本人已通关!!!
帖子主题积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
金钱2820 ¥
魅力2990 点
星座双鱼座
在线时间263 小时
☆弑魂 发表于
呵呵,王牌战机我觉得也很简单了,本人已通关!!!
我前天晚上刚刚通关,主要是最后那关追哪个名字忘记啦 暂且也称之为王牌吧 追击他 追的哪叫一个累 也是花时间最长的 我真滴是很费解呀 他所驾驶的米格战机的一个引擎都已经被我用导弹打坏啦 可是仍然跑的比兔子还快&&更郁闷的是 经常被锁定 搞的我手忙的不行 经常按错键 要不就是提示让C键的时候 居然没有效果 &&打得真是叫一个辛苦 飞机明明已经严重受损 再加上又被我的导弹和机炮击中了 N多次 却仍然是跑的比我F22还要快 这中间还失败过 好几次 真是想哭啊 & &&&早知道用键盘玩这么辛苦 我真应该去买个手柄&&我玩鹰击长空的时候 都没这么累& &现在玩的这么累 也可能是因为 我的技术原因 另外就是用键盘玩 操作不好
帖子主题积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
游民牧师, 积分 1250, 距离下一级还需 750 积分
金钱2820 ¥
魅力2990 点
星座双鱼座
在线时间263 小时
<font color="#5947050 发表于
多简单&&我倒是希望敌机赶紧来追我 ,你可以减速反咬&&,省了我去追
玩这个什么黄牌空战 玩的都想哭啦&&一是敌机满地图乱窜搞得我头的晕啦 二就是我键盘可能使用的太久啦 所以关键时刻&&C键 按了之后会出现无效果
Powered by&守望先锋卡顿怎么办 画面模糊解决方法
守望先锋卡顿怎么办 画面模糊解决方法
文章作者:网络 发布时间:日 10:36
守望先锋自发售后,以其优秀的画面和游戏性获得不少玩家好评,但是由于游戏刚刚发售,游戏的优化方面还存在不少问题,最近就有不少玩家反映在游戏中存在卡顿和画面模糊的问题,今天小编就为各位玩家带来解决方法,一起来看看吧。
双显卡玩家使用独显
有部分玩家电脑是使用双显卡的,一般电脑在工作时,为了节省电量默认是使用集显的,而集显的性能较差,并不能用来玩配置要求较高的游戏。我们可以打开显卡控制面板(一般在桌面鼠标右键即可出现)为守望先锋设置显卡为独显(或双显卡中性能最好的显卡)。并将显卡性能和电源选项调成最高,关闭同步垂直并应用确定即可。
双显卡设置请点击:。
调整电源选项
桌面右下角电源选项设置选择高能耗的高性能选项。
在游戏内设置选项
1.游戏显示模式调整为全屏显示,无边框模式会加载桌面,对电脑产生更大负担。
2.关闭垂直同步,否则会影响帧数。
3.分辨率调整,不要调整到最高,越高的分辨率也越吃性能,调到适合自己的屏幕即可,如果性能不够还可略微调低一点。
4.调整帧率限制,一般来说60帧是大多说人眼睛的极限,不过我们不需要60帧那么高,在不低于30帧的情况下通常是不会影响到游戏体验的。
5.图像渲染调低,特效降低或是关闭。
总得来说,每个玩家需要根据自己电脑的情况,调整游戏内的设置。如果全部调到最低仍然解决不了问题,可以考虑为电脑更新配置,提高性能。
以上就是守望先锋卡顿和画面模糊的全部解决方法了,希望可以帮助到各位玩家。
??更多精彩内容尽在着迷守望先锋专区??

我要回帖

更多关于 wow 画面突然顿卡 的文章

 

随机推荐