急!!!glReadPixels获取像素点的问题

现在用 RenderTexture来获取像素点。
几个问题需要官方解答一下。
先说一下获取方法:
一个需要被绘制的问题 sprite,一个RenderTexture的实例 render,width,height为纹理宽高。
render->beginWithClear(0.0f, 0.0f, 0.0f, 0.0f);
sprite->visit()
GLubyte *pcolor = new GLubyte;
glReadPixels(0,0,width, height,GL_RGBA,GL_UNSIGNED_BYTE, pcolor);
render->end();

问题 1:
pcolor :现在这里面是一个byte数组,在官方的 RenderTexture 类中调用newImage方法获取image时,最后对pcolor 这个像素数组进行了一次Y坐标的倒置。
那么,现在我直接用pcolor 来判断某个坐标点的像素值,是否Y坐标要进行一次 倒置(height-y:纹理高减去当前在纹理内部的点击Y坐标)? 具体查找方法不阐述。
问题 2:
pcolor 这个byte数组里,每四位表示一个RBG+A 的像素值,那么问一下,alpha值是第几位?
现在假设 是第四位(比如 int(*(pcolor + 3) ),这里是第一组像素的 alpha值。
现在有这么一张图片 ,观察图片 alpha 位,因为大多为0,但是现在打印情况是无任何一个通过上面判断获取的alpha值为0,在透明区域 rgb 都为0,alpha值为255。
具体哪里有问题,希望指导一下。
问题 3:
上面方法改变一下:
(x,y 为点击到纹理内部的某一坐标:)
GLubyte *pcolor = new GLubyte;
glReadPixels(x,y,1, 1,GL_RGBA,GL_UNSIGNED_BYTE, pcolor);
render->end();

因为glReadPixels内部实现是不可见的,所以推断该用法可以 获取具体某一个x,y坐标的像素值。
假设上面正确, 那么 x,y 怎么转换。 因为如果接受点击对象的锚点在中心, 那么x,y可能为负值,glReadPixels 这个方法应该不能接收x,y为负的情况吧。 如果需要转换,是按左下角还是左上角转换一下坐标呢?

楼主解决了么