Three.js: SMAAPass:テクスチャは更新用にマークされていますが、画像が不完全です

作成日 2018年10月29日  ·  4コメント  ·  ソース: mrdoob/three.js

問題の説明

SMAAPassを使用すると、警告がログに記録されます。
THREE.WebGLRenderer: Texture marked for update but image is incomplete
この警告は、 Image.completeがfalseであるために発生します。 Image.complete設定した後、非同期のように見えます。

可能であれば、実例も含めてください。 これらのテンプレートから始めることができます:

Three.jsバージョン
  • []開発
  • [x] r97
  • []..。
ブラウザ
  • [x]それらすべて
  • []クローム
  • [] Firefox
  • [ ] インターネットエクスプローラ
OS
  • [x]それらすべて
  • [ ] ウィンドウズ
  • [ ] マックOS
  • [] Linux
  • [] Android
  • [] iOS
ハードウェア要件(グラフィックカード、VRデバイスなど)
Bug

最も参考になるコメント

それは私にはハックのように見えます。 より一般的なパターンを検討してください。

var image = new Image();
image.src = dataURL;

var texture = new THREE.Texture( image );

image.onload = function () {
    texture.needsUpdate = true;
};

全てのコメント4件

あなたが正しい。 簡単な修正は、次のコードセクションのようになります。 理想的には、 SMAAPassこの行の後に配置されます。

var self = this;

setTimeout( function () {

        // assigning data to HTMLImageElement.src is asynchronous (see #15162)
        // using setTimeout() avoids the warning "Texture marked for update but image is incomplete"

    self.searchTexture.needsUpdate = true;
    self.areaTexture.needsUpdate = true;

}, 0 );

変更を加えてPRを行いますか?

それは私にはハックのように見えます。 より一般的なパターンを検討してください。

var image = new Image();
image.src = dataURL;

var texture = new THREE.Texture( image );

image.onload = function () {
    texture.needsUpdate = true;
};

確かに、それはより良いです👍

onloadコールバックに変更します。

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