返回

Android图形系统:驱动篇之垂直同步到底要不要开

Android

正文

纵观整个Android图形系统,渲染过程可谓是至关重要。而垂直同步,作为渲染过程中的关键一环,自然也备受关注。那么,对于我们应用开发工程师而言,垂直同步到底是开启还是关闭呢?

垂直同步的原理

垂直同步,英文名Vertical Sync,简称VSync。它的作用是将设备的显示刷新率与应用程序的渲染帧率同步起来。通常情况下,显示器的刷新率为60Hz,即每秒刷新60次。而如果应用程序的渲染帧率高于60fps,就会出现画面撕裂的情况。

画面撕裂的成因

画面撕裂的本质是应用程序渲染新帧的速度快于显示器刷新屏幕的速度。此时,显示器在刷新时会将两帧画面混合在一起,导致画面出现撕裂感。

垂直同步的优点

  1. 消除画面撕裂: 垂直同步通过将渲染帧率与刷新率同步,有效解决了画面撕裂问题。
  2. 降低GPU负载: 当垂直同步开启时,应用程序的渲染帧率会被限制在刷新率之内,从而降低GPU的负载。

垂直同步的缺点

  1. 增加延迟: 垂直同步会导致输入延迟的增加。因为应用程序需要等待显示器刷新完成后才能渲染新帧,从而导致操作响应速度变慢。
  2. 影响游戏体验: 对于游戏应用而言,垂直同步的开启会降低游戏的流畅度,影响游戏体验。

到底要不要开?

综上所述,垂直同步的优缺点都很明显。那么,我们到底要不要开呢?这需要根据具体情况而定:

  • 如果应用是交互性较强的,如游戏、视频播放器等,建议关闭垂直同步。 关闭垂直同步可以降低输入延迟,提升操作响应速度和游戏流畅度。
  • 如果应用是以展示为主,如图片浏览、文档阅读等,可以开启垂直同步。 开启垂直同步可以消除画面撕裂,提升视觉效果。

建议的设置方式

对于应用开发工程师而言,可以在应用的配置文件中添加如下代码,以控制垂直同步:

<application ...>
    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait"
        android:configChanges="orientation|screenSize"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="android.max_aspect_ratio"
            android:value="1.6" />
        <meta-data
            android:name="android.has_content_capture_support"
            android:value="true" />
        <meta-data
            android:name="android.preferred_refresh_rate"
            android:value="60.0" />
        <meta-data
            android:name="android.max_refresh_rate"
            android:value="120.0" />
        <meta-data
            android:name="android.min_refresh_rate"
            android:value="60.0" />
    </activity>
</application>

在上述代码中,可以通过修改<meta-data android:name="android.preferred_refresh_rate">的值来设置首选的刷新率。如果将该值设置为60.0,则表示开启垂直同步。

SEO优化