Egret Engine 5.3.10リリース、主にiOS 14システムに基づくカートン問題を修復


今日Egret Engine 5.3.10版が正式に発表され、主な内容はiOS 14システム上のmeshカートン、htmlsoundの音がバックグラウンドにマウントされた後、戻ることができず、竜骨モデルに異常が表示された3つの問題を修復することです.
現在までEgret Engine 5.3シリーズは依然としてテスト版に属しているが、製品の機能は安定しており、カートン問題のある開発者のアップグレード処理を提案している.
オンラインプロジェクトでEgret Engine 5.2シリーズの安定版を使用し、エンジンバージョンをアップグレードしてカートン問題を解決したくない場合は、Egret Engine 5.2で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つの案はiOS 14システムによるカートン問題を解決することができ、プロジェクトの状況に応じて自分で選択することができます.Egret Engineを使用している間に問題が発生した場合は、公式カスタマーサービスのマイクロ信号:egretengineに連絡してください.私たちは最初に解決します.