UI材质更换后异常问题

由于UI在头盔端存在性能问题,尝试把NMaterial中DoubleSide换成FrontSide,大部分UI看起来正常,性能也有所提升,但是图片和视频却出现异常,不能正常渲染,只能看到一片空白。不知道有没有办法解决这个问题

 
已邀请:

谷主

赞同来自:

那说明他们需要backside啊

mader89

赞同来自:

换了之后还是不行,不起作用。

mader89

赞同来自:

材质更换成FrontSide后,延时显示UI可以正常渲染图片/视频,基于这个现象,猜测是由于Three.TextureLoader加载纹理需要一段时间,导致渲染图片时材质Shader中的map: Texture为null,也就是说渲染图片时纹理没加载出来,最后导致图片都是白色(应该是漫反射颜色)。解决方法:1.在纹理加载后(onExternalLoadSuccess)更新材质,NGraphics.updateMesh(),没有效果。2.直接修改Three.Texture中的变量needsUpdate,也没有效果。3.不直接set url,新增了一个异步函数,等待纹理加载完成后在显示,结果可以正常渲染。

public async loadTexture(url: string): Promise<void>
    {
        if (this._url == url)
            return;
        this._url = url;
        this.clearContent();
       
        let tex = await new TextureLoader().loadAsync(this._url);
        this.onExternalLoadSuccess(new NTexture(tex));
        this.updateGear(7);
    }

 
不知道有没有其他解决方法,如果在纹理加载后在刷新材质会不会有一帧白色的,DoubleSide材质没有问题,难道是因为画了两次,纹理刷新了?
 

谷主

赞同来自:

一开始你没说是loader,现在又才说是loader加载外部图片。没法搞懂问题。

mader89

赞同来自:

抱歉,是我没有描述清楚,有问题的是通过loader加载的图片和视频。

要回复问题请先登录注册