最近在做一个类似于刮奖效果的游戏,想实现图片擦除后的像素检测逻辑,参考网上的一些文章,C++实现方式是
CCImage* image = pRenderTexture->newCCImage(true);
unsigned char *data_= image->getData();
//todo 分析data里的像素信息
但是我使用lua开发的(cocos2dx3.4),代码如下
local image = self._renderTexture:newImage()
--local hasAlpha = image:hasAlpha() --调用ok
--local bitPerPixel = image:getBitPerPixel() --调用ok
local data_ = image:getData() --报错attempt to call method 'getData' (a nil value)
在调用getData()方法时报错,看了下lua的导出配置,发现这个方法是被忽略掉的,没有被导出到lua,然后自己尝试将其从忽略列表里移除,重新导出给工程使用,但是还是报同样错误,猜想这个方法的返回值比较特殊,不能导出给lua使用。
目前想到的解决方案就是C++里自己实现一个工具类,在工具类里去调用getData()方法,然后将返回值重新包装返回给lua
unsigned char *data_= image->getData();
//封装数据返回给lua
但是这样做比较麻烦,另外用gl.readPixels()方法可以读取像素信息,但是他读取的是整个屏幕的,而不是某个texture的,我的需求是具体分析某个图层的texture信息,请问lua里要做像素分析有什么好的实现方法吗?谢谢大家了。