Three.js: SMAAPass: Tekstur ditandai untuk pembaruan tetapi gambar tidak lengkap

Dibuat pada 29 Okt 2018  ·  4Komentar  ·  Sumber: mrdoob/three.js

Deskripsi masalah

Saat menggunakan SMAAPass, peringatan dicatat:
THREE.WebGLRenderer: Texture marked for update but image is incomplete
Peringatan ini terjadi karena Image.complete salah, setelah menyetel Image.complete sepertinya tidak sinkron.

Harap sertakan juga contoh langsung jika memungkinkan. Anda dapat mulai dari template ini:

Versi Three.js
  • [] Dev
  • [x] r97
  • [] ...
Browser
  • [x] Semuanya
  • [] Chrome
  • [] Firefox
  • [ ] Internet Explorer
OS
  • [x] Semuanya
  • [] Jendela
  • [] macOS
  • [] Linux
  • [] Android
  • [] iOS
Persyaratan Perangkat Keras (kartu grafis, Perangkat VR, ...)
Bug

Komentar yang paling membantu

Itu tampak seperti retasan bagi saya. Harap pertimbangkan pola yang lebih konvensional:

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

var texture = new THREE.Texture( image );

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

Semua 4 komentar

Kamu benar. Perbaikan sederhana dapat terlihat seperti bagian kode berikut. Idealnya ini akan ditempatkan setelah baris ini di 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 );

Apakah Anda ingin melakukan PR dengan perubahan tersebut?

Itu tampak seperti retasan bagi saya. Harap pertimbangkan pola yang lebih konvensional:

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

var texture = new THREE.Texture( image );

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

Memang, itu lebih bagus 👍

Saya akan mengubahnya menjadi onload callback.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat