Egret Engine 5.3.10版本发布,主要修复基于 iOS14 系统的卡顿问题

Stella981
• 阅读 684

今天Egret Engine5.3.10版正式发布,主要内容是修复iOS14 系统上 mesh 卡顿、htmlsound 声音挂载到后台后无法返回以及龙骨模型显示异常三个问题。

截至目前,虽然Egret Engine5.3系列依然属测试版,但产品功能已趋于稳定,建议有卡顿问题的开发者升级处理!

如若您的上线项目使用的是Egret Engine 5.2系列的稳定版,且不想升级引擎版本解决卡顿问题,我们为您提供了第二套解决方案,需要您在Egret Engine 5.2.X版本中手动修改以下2个位置的代码:

位置1:WebGLVertexArrayObject.ts
cacheArrays方法

 .......

            if (meshVertices) {
                let vertData = [];
                // 计算索引位置与赋值
                const vertices = this.vertices;
                const verticesUint32View = this._verticesUint32View;
                let index = this.vertexIndex * this.vertSize;
                // 缓存顶点数组
                let i = 0, iD = 0, l = 0;
                let u = 0, v = 0, x = 0, y = 0;
                for (i = 0, l = meshUVs.length; i < l; i += 2) {
                    iD = index + i * 5 / 2;
                    x = meshVertices[i];
                    y = meshVertices[i + 1];
                    u = meshUVs[i];
                    v = meshUVs[i + 1];

                    if (rotated) {
                        vertData.push([
                            a * x + c * y + tx,
                            b * x + d * y + ty,
                            (sourceX + (1.0 - v) * sourceHeight) / textureSourceWidth,
                            (sourceY + u * sourceWidth) / textureSourceHeight,
                        ]);
                    } else {
                        vertData.push([
                            a * x + c * y + tx,
                            b * x + d * y + ty,
                            (sourceX + u * sourceWidth) / textureSourceWidth,
                            (sourceY + v * sourceHeight) / textureSourceHeight,
                        ]);
                    }
                    verticesUint32View[iD + 4] = alpha;
                }
                for (let i = 0; i < meshIndices.length; i += 3) {
                    let data0 = vertData[meshIndices[i]];
                    vertices[index++] = data0[0];
                    vertices[index++] = data0[1];
                    vertices[index++] = data0[2];
                    vertices[index++] = data0[3];
                    verticesUint32View[index++] = alpha;

                    let data1 = vertData[meshIndices[i + 1]];
                    vertices[index++] = data1[0];
                    vertices[index++] = data1[1];
                    vertices[index++] = data1[2];
                    vertices[index++] = data1[3];
                    verticesUint32View[index++] = alpha;

                    let data2 = vertData[meshIndices[i + 2]];
                    vertices[index++] = data2[0];
                    vertices[index++] = data2[1];
                    vertices[index++] = data2[2];
                    vertices[index++] = data2[3];
                    verticesUint32View[index++] = alpha;

                    // 填充数据
                    vertices[index++] = data2[0];
                    vertices[index++] = data2[1];
                    vertices[index++] = data2[2];
                    vertices[index++] = data2[3];
                    verticesUint32View[index++] = alpha;
                }

                let meshNum = meshIndices.length / 3;
                this.vertexIndex += 4 * meshNum;
                this.indexIndex += 6 * meshNum;

            } else {
              ......

位置2:WebGLRenderContext.ts
drawTexture方法

  let buffer = this.currentBuffer;
            if (this.contextLost || !texture || !buffer) {
                return;
            }

            let meshNum = meshIndices && (meshIndices.length / 3) || 0;
            if (meshIndices) {
                if (this.vao.reachMaxSize(meshNum * 4, meshNum * 6)) {
                    this.$drawWebGL();
                }
            } else {
                if (this.vao.reachMaxSize()) {
                    this.$drawWebGL();
                }
            }

            if (smoothing != undefined && texture["smoothing"] != smoothing) {
                this.drawCmdManager.pushChangeSmoothing(texture, smoothing);
            }

            // if (meshUVs) {
            //     this.vao.changeToMeshIndices();
            // }

            let count = meshIndices ? meshNum * 2 : 2;
            .........

以上2种方案均可解决基于iOS14系统带来的卡顿问题,大家可根据项目情况自行选择。使用Egret Engine期间如若遇到问题,可联系官方客服微信号:egretengine,我们会第一时间帮您解决!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
2021最新Android知识体系总结,真香
作为安卓开发者,除了Bug,经常会碰到下面这些问题:应用卡顿,丢帧,屏幕画面撕裂,操作界面刷新缓慢,UI不美观,布局混乱…这些问题频发的话,年后可能就不用来了。开发App的时候,你是否会觉得界面卡顿?尤其是自定义View的时候。Android应用的卡顿、丢帧等,这些影响用户体验的因素绝大部分都与16ms这个值有关。Android设备的刷新率也是
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这