我试图在cocos2d-JavaScript中实现Pixel完美碰撞测试。
我无法清除像素缓冲区。我不知道为什么。
我做:
var winSize = cc.director.getWinSize();
var rend = new cc.RenderTexture( winSize.width , winSize.height, cc.Texture2D.PIXEL_FORMAT_RGBA8888);
var pixels = new Uint8Array(4 * ~~numPixels);
rend.beginWithClear( 0, 0, 0, 255);
gl.readPixels(x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
rend.end();
for(var i = 0; i < ~~numPixels; i+= 1)
{
var rb = pixels[4*i + 0];
var gb = pixels[4*i + 1];
DEBUG(LEVEL_DEBUG, "PP - collision test", "i=%s; rb=%s; gb=%s;", ""+i, ""+rb, ""+gb);
}
是的,我甚至没有画画。只是尝试清除renderTexture
,readPixels
并检查它们是否已清除。事实并非如此。
我甚至首先尝试用一些已知的值填充数组像素,检查它 - 是的它就在那里。在readPixels
之后有不同的值,但不清楚......
怎么了?有人可以帮忙吗?
我也试过rend.cleanup();
我尝试拆分beginWithClear
以分隔clear()
和begin()
...相同的结果。
我试过rend.clearRect
... rend.setClearColor
......没有任何帮助。