关于微信7.0.3版本之后的版本,微信小游戏 Android 端调整 “在屏 Canvas” 的放缩策略

    在7.0.3版本之后的版本中,微信 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)
 
 
 
 
 
3、请问 Laya引擎如何解决模糊的问题啊?
 
已邀请:

layabox

赞同来自: 闪小达_

看到有一些人在继续跟帖,也有一些开发者找来提问。统一解释一下。经过我们核实,反馈有问题的开发者,最终确认并非引擎问题。是开发者的设计尺寸的问题。比如设计的时候宽是750,而实际宽是1125或者更高的时候。那看起来就像是有问题。现在手机发展的很快,手机屏像素越来越高了。
 
是不是有问题,在你有问题的机型里,写个可以重现的DEMO,然后将设计尺寸写成物理像素(laya.Browser.width和laya.Browser.height),就可以马上验证出来了。我看到有人回贴乘了一个倍数,这相当于就是把设计尺寸放大,或许可以解决一部分的项目问题,开发者可以尝试,但也并非是完美方案。这要根据自己的项目情况进行处理。
 
结论,对引擎而言,7.03版本的修改,对我们的引擎适配模式而言,和其它引擎不一样,不会导致模糊或者产生锯齿等问题。
如项目有问题,请注意有问题的手机像素和项目的设计尺寸的比例。

蒋德飞

赞同来自: 181*****970 yhcliang

线上几乎所有的laya做的游戏的都遭了,还是麻烦解决一下

xtcel5805

赞同来自: 泛白

123.png

这样可以解决,但是会比以前耗性能.不知道大家有什么方案

layabox

赞同来自:

LayaAir引擎没有存在模糊问题。

泛白

赞同来自:

大大,微信最新版,android是存在模糊问题的,我也问了朋友的游戏,很多机型都存在模糊问题,比如字体都是有锯齿的

yhcliang

赞同来自:

请问有官方解决方案吗

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作