Three.js: SMAAPass: تم وضع علامة على النسيج للتحديث ولكن الصورة غير مكتملة

تم إنشاؤها على ٢٩ أكتوبر ٢٠١٨  ·  4تعليقات  ·  مصدر: mrdoob/three.js

وصف المشكلة

عند استخدام SMAAPass ، يتم تسجيل تحذير:
THREE.WebGLRenderer: Texture marked for update but image is incomplete
يحدث هذا التحذير لأن Image.complete خطأ ، بعد تعيين Image.complete يبدو أنه غير متزامن.

يرجى أيضًا تضمين مثال حي إن أمكن. يمكنك البدء من هذه القوالب:

إصدار Three.js
  • [] ديف
  • [x] r97
  • [] ...
المستعرض
  • [x] كل منهم
  • [ ] كروم
  • [ ] ثعلب النار
  • [ ] متصفح الانترنت
نظام التشغيل
  • [x] كل منهم
  • [ ] شبابيك
  • [] macOS
  • [] لينكس
  • [ ] ذكري المظهر
  • [] 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 );

هل ترغب في إجراء علاقات عامة مع التغييرات؟

هذا يبدو لي وكأنه اختراق. يرجى النظر في نمط أكثر تقليدية:

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

var texture = new THREE.Texture( image );

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

في الواقع ، هذا أجمل

سوف أقوم بتغييره لتحميل عمليات الاسترجاعات.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات