用shader 怎么能修改每一个像素点

18497ac4f23b16c0df347dc2fef4a90c8092eb88_2_690x497

片断着色器不就是每个像素执行一次吗?但是逻辑如果放在shader 性能可能就有点问题

那个发子弹的球?

那个框出来的区域

将框住的UV范围传到shader在范围内的改变 没在的就还是按原像素信息显示 不知道行不行

shader必须固定长度数组,你这个不知道长度啊

大哥这个想法我感觉好像有点可以

也确实啊 随着画的话 点越来越多,长度也没法

我想到的是:
根据绘制的区域,创建出来一个贴图,将贴图传给shader,shader对贴图进行采样。

我只能帮到这,怎么创建出来包含路径信息的贴图,就看你基本功了

https://www.jianshu.com/p/1aa0e296bd13

就是这行代码,你看看怎么把你的路径信息传进去

texture.initWithData(new Uint8Array([0, 0, 0]), cc.Texture2D.PixelFormat.RGB888, 1, 1, cc.winSize);

刚才我在考虑 说的有道理,我尝试下

论坛这方面的知识比较少,但还是有人分享,帮你找了一个~

谢谢啊 感动到 :heartbeat:

解决了记得把方案分享出来呀 :kissing_heart:

要是解决了 必发一贴

为什么一定要用shader这个用离屏canvas渲染然后当贴图传给gpu岂不是很方便

大佬咋个弄呢

创建一个uint8Array存储显示或隐藏或点的数据,当画完全部的线后,区域内随便选一个点,用漫水算法扩散开,选的点如果不在包围区域内,则扩散出来的区域就是隐藏的区域,反之亦然,数据有了,可以建一个texture,或者用shader都可以显示

rendertexture