Pixi.js: iOSでのPi​​xiJSレンダラーDrawingbufferの問題

作成日 2017年06月16日  ·  10コメント  ·  ソース: pixijs/pixi.js

こんにちは!
デスクトップでうまく動作するPixieコードは、モバイルでは奇妙に動作するようです。
私はpixie.jsの初心者なので、ここで何か間違ったことをしている可能性が非常に高いかもしれません。

モバイルで描画コードを使用すると、キャンバスが奇妙に更新されているように見えます。
ストローク全体を再描画するのではなく、DrawingBufferを維持し、それに新しいスプライトを追加するだけです。

'legacy:'をfalseまたはtrueに設定しても(以下のように)、同じ結果が得られます。

ご覧いただきありがとうございます!

pixierenderer


initializePixieCanvas() {
    console.log("init canvas")
    const cArea = this.canvasContainer;
    const width  = 1000;
    const height = 1000;
    this.stage = new PIXI.Container();
    this.renderer = new PIXI.WebGLRenderer(
      width,
      height,
      {
          antialias: false,
          transparent: true,
          resolution: 2,
          clearBeforeRender: false,
          preserveDrawingBuffer: true,
          premultipliedAlpha: false,
          forceFXAA: true,
          legacy: true
      }
    );

    cArea.appendChild(this.renderer.view);

    this.renderer.view.style.position = "absolute";
    this.renderer.view.style.top = "0";
    this.renderer.view.style.left = "0";
    this.renderer.view.style.pointerEvents = "none";
    this.renderer.view.style.zIndex = "99";

    const cnvs = this.renderer.view;
    const scaleForHighResDisplay = true;
    if (scaleForHighResDisplay) {
        cnvs.width = width * 2;
        cnvs.height = height * 2;
        cnvs.style.width = width + 'px';
        cnvs.style.height = height + 'px';
    }

    this.pointer = new PIXI.Sprite(PIXI.Texture.fromCanvas(this.brushElement));
    this.pointer.texture.destroy();
    this.pointer.texture = PIXI.Texture.fromCanvas(this.brushElement);
    this.pointer.anchor.x = 0.5;
    this.pointer.anchor.y = 0.5;

    this.renderer.clear();

    this.stage.addChild(this.pointer);
}
Stale 💾 v4.x (Legacy) 🤔 Question

最も参考になるコメント

したがって、良いニュースは、アンチエイリアスをオンにすると、このアーティファクトが修正されることです。 ただし、アンチエイリアスを明確にオンにすると、パフォーマンスに大きな影響があります。 これを回避/修正するためのヘルプはバグです。 THX!

全てのコメント10件

あなたはこれほど高度なもののためにネイティブアプリを書くべきです。

Webアプリは驚くほど高速で、非常に近いように見えます。それ以外は、drawingbufferはもちろん古いデータを逆流させるのが好きです...

したがって、良いニュースは、アンチエイリアスをオンにすると、このアーティファクトが修正されることです。 ただし、アンチエイリアスを明確にオンにすると、パフォーマンスに大きな影響があります。 これを回避/修正するためのヘルプはバグです。 THX!

こんにちは! これは精度の問題のようですが、シェーダーの精度をhighPに設定してみましたか?

アンチエイリアスを有効にして動作することを確認できます。

@GoodBoyDigital :残念ながら効果がなかった「highP」の設定を試みました

アンチエイリアスのパフォーマンスへの影響なしにこれを修正する方法は他にありますか?

@floepi

その背景が必要ない場合は、透明度を変更してみてください。

{ transparent: 'notMultiplied'}

または

{ transparent: false}

残念ながら、これは透明なペイントレイヤーであるため、両方が必要になります...
アンチエイリアスを有効にしたときにこれが発生しない理由をデバッグできるかどうかを確認する必要があります...

モバイルブラウザをデバッグしますか?

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 貢献していただきありがとうございます。

このスレッドは、閉じられた後に最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、新しい問題を開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価