Bei Verwendung des SMAAPass wird eine Warnung protokolliert:
THREE.WebGLRenderer: Texture marked for update but image is incomplete
Diese Warnung tritt auf, weil Image.complete
falsch ist. Nach dem Festlegen von Image.complete
sieht es so aus, als wäre es asynchron.
Bitte fügen Sie nach Möglichkeit auch ein Live-Beispiel bei. Sie können mit diesen Vorlagen beginnen:
Du hast recht. Eine einfache Lösung könnte wie im folgenden Codeabschnitt aussehen. Idealerweise wird es nach dieser Zeile in 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 );
Möchten Sie mit den Änderungen PR machen?
Das sieht für mich nach einem Hack aus. Bitte betrachten Sie ein konventionelleres Muster:
var image = new Image();
image.src = dataURL;
var texture = new THREE.Texture( image );
image.onload = function () {
texture.needsUpdate = true;
};
In der Tat ist das schöner 👍
Ich werde es in Onload-Rückrufe ändern.
Hilfreichster Kommentar
Das sieht für mich nach einem Hack aus. Bitte betrachten Sie ein konventionelleres Muster: