cocos creator 怎么获取图片中某一点的RGB值

如果通过绘制的 方法,可能有一些问题,因为有些图片要做预处理再绘制,关键就在预处理这一步要获得图片的信息pixel信息.

CCRenderTexture里有readPixels方法,不知道能不能满足你的需求

你去看看Image相关的api和数据,c++做的获取某点像素我是从image入手做的

:joy: creator没找到image相关的

咨询怎么把一张png图片转成CCRenderTexture类型的?

你好请问有具体的解决思路吗

https://docs.cocos.com/creator/manual/zh/render/camera.html#截图 参考下面的截图方案

代码在creator2.4.2浏览器console测试可行. 其它环境没测试.
像素值被记录到data里.

x = y = 0;
width = height = 1;
data = new Uint8Array(width * height * 4);
func = () => {
    cc.director.off(cc.Director.EVENT_AFTER_DRAW, func);
    gl = cc.game.canvas.getContext('webgl');
    gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);
}
cc.director.on(cc.Director.EVENT_AFTER_DRAW, func);

image
希望可以有帮助

2赞

我这边是直接黑屏了,this.cameraGraphics.render(this.node)报错,能看看你节点层级么?多谢!

楼主可以说下具体遇到的问题,让大家看看你的应用场景

着色器内是可以获取到每点的色值的

就是我现在想获取点击位置的像素值,参照楼上的写法是报错直接黑屏的,就在一张图片上点击

涉及到纹理的问题在着色器内可以通过传入坐标得到r、g、b值,但是我不知道如何能够输出到脚本代码

不是很明白你的意思,能稍微说简单点吗,小菜鸡能力有限啊 :cry:


builtin-2d-sprite.effect 代码改写下逻辑

看下 wangchao_119 的回答吧
它的代码是可以的

如果你的代码报错了,抛出下错误看看

感谢老哥耐心解答,稍等一会


大致是这样

问题已经解决了,谢谢老哥