[WARN]: Unknown TEXTURE_FMT: undefined

如果设置了
texture.setFilters(cc.Texture2D.Filter.NEAREST, cc.Texture2D.Filter.NEAREST);

控制台一直输出这个警告:
[WARN]: Unknown TEXTURE_FMT: undefined

动态合图 如何使用Point 过滤方式啊?

求指教啊!!!!!!!!

这个问题太简单了么?

tex.update({‘minFilter’:cc.Texture2D.Filter.NEAREST,‘magFilter’:cc.Texture2D.Filter.NEAREST,‘format’:cc.Texture2D.PixelFormat.RGBA8888});

谢谢,确实没有警告产生了。

虽然可以用,但是有个代码报错。

可是在开启了合同模式的时候,依然无法使用Point过滤,我个人感觉应该是对合图后的图集进行修改。但是不知道该怎么修改。

在实际使用的时候再把tex重新update一次

        cc.macro.CLEANUP_IMAGE_CACHE = false;
        cc.dynamicAtlasManager.enabled = true;
        cc.dynamicAtlasManager.maxFrameSize = 1024;
        cc.dynamicAtlasManager.showDebug(true);

        cc.loader.loadRes('head',cc.SpriteFrame,((err,spf)=>{
            this.spf1 = spf;
            this.block1 = true;
        }).bind(this));
        cc.loader.loadRes('head2',cc.SpriteFrame,((err,spf)=>{
            this.spf2 = spf;
            this.block2 = true;
        }).bind(this));

        while(this.block1!=true||this.block2!=true)
            yield;
        cc.dynamicAtlasManager.insertSpriteFrame(this.spf1);
        cc.dynamicAtlasManager.insertSpriteFrame(this.spf2);
        yield;
        cc.find('New Sprite').getComponent(cc.Sprite).spriteFrame = this.spf1;
        yield;
        // cc.find('New Sprite').getComponent(cc.Sprite).spriteFrame.getTexture().update({'minFilter':cc.Texture2D.Filter.NEAREST,'magFilter':cc.Texture2D.Filter.NEAREST,'format':cc.Texture2D.PixelFormat.RGBA8888});
        yield;
        cc.find('New Sprite copy').getComponent(cc.Sprite).spriteFrame = this.spf2;
        yield;
        // cc.find('New Sprite copy').getComponent(cc.Sprite).spriteFrame.getTexture().update({'minFilter':cc.Texture2D.Filter.NEAREST,'magFilter':cc.Texture2D.Filter.NEAREST,'format':cc.Texture2D.PixelFormat.RGBA8888});

我这儿测试的结果是,这两行注掉,new sprite 和 new sprite copy都是糊的,
但是把这两个注释解掉,那么他们就都是point了

https://github.com/cocos-creator/engine/blob/26031bddd1aecdbf9bbdebe19ecaa672b1c35061/cocos2d/core/renderer/utils/dynamic-atlas/manager.js#L39
这里可以看到实际上是_atlases在管,但是实际上它没有对外暴露
manager把它赋值出去是拷贝复制的,不是引用复制
实际上你把上面两行解掉注释后,可以发现debug里面的图仍然是糊的,但sprite的spriteframe用的texture不是糊的

说实话没有太明白,我不管加不加update,都不行。

我对你的yield也非常感兴趣,这个有用么?为啥我代码里加不了?

可以查下 生成器,一般用于将一个过程拆散分几帧运行,一些引擎调用是当前帧不生效,要隔几帧再调