【周知】Android 端将调整小游戏 “在屏 Canvas” 的放缩策略

Hi all,

    之后的版本中,微信 Android 端将调整 “在屏 Canvas” 的放缩策略,与 iOS 保持一致。请游戏开发者提前做好适配工作,该修改可能导致游戏界面模糊的问题。望周知。


1. 问题描述

    在之前的版本中,小游戏中,第一个 Canvas 即 “在屏Canvas” ,无论开发者怎样设置 width height,在底层都会将width height放缩为物理像素。(gl.viewport gl.scissor 等接口的底层,我们也做了对应的放缩,所以开发者感知不到这个逻辑)

    这种放缩,会让在屏Canvas无论如何设置 size 都是最清晰的状态。

    但是,这种放缩会使得渲染相对较慢,而有些游戏并不需要这种清晰度;同时也给一些重度游戏在使用 shader 接口时埋了坑,给游戏开发造成了不必要的困难。

    所以我们决定在之后的版本中,Android端去掉这个放缩逻辑,与 iOS 保持一致。


2. 如何适配

   下面用代码举例:在一台 wx.getSystemInfo 中返回 screenWidth = 360  screenHeight = 640 pixelRatio = 3 的机器上。在之前的版本中,你直接绘制文字就是清晰的。现在则需要主动设置

     canvas.width = screenWidth * pixelRatio; canvas.height = screenHeight * pixelRatio;

才能和之前达到一样的效果。

另外,对 “在屏 canvas” 的 width/height 的任何修改和适配,这种适配都不会影响游戏在老版本上的运行

    

如果你使用一些游戏引擎,请查阅游戏引擎的文档,如 cocos ,不需要自己修改 canvas 的宽高,只需要设置

    setRetinaEnable(true)


p.s.

我们自查发现大部分游戏,游戏主场景是没有问题的,但一些 loading 场景,则会有模糊的现象。请注意一下。


最后一次编辑于  2018-12-26  (未经腾讯允许,不得转载)
收藏 0评论 1
  • 洒一地阳光☀洒一地阳光☀

    刚看到。。。没适配,线上确实有不少人反馈画面模糊了。以后能出个官方公告的专栏嘛,可以第一时间看到。

    赞同 0没有帮助
    评论 0
    复制
    星期五 15:53