Iphone的像素问题

Iphone的像素问题,iphone,opengl-es,glreadpixels,Iphone,Opengl Es,Glreadpixels,我正在用OPENGL ES在Iphone中绘制一个饼图。现在我需要检查用户单击的饼的颜色。当我单击任何饼图时,它有时返回正确的值,有时不正确,有时只返回0,0,0 '(void)handleTap:(UITapGestureRecognitor*)识别器{ CGPoint lPoint=[识别器位置触摸:0在视图中:mGLView] 字节aPixel[4]; glPixelStorei(GLU包对齐,1); glReadPixels(lPoint.x、lPoint.y、1、1、GL_RGBA、G

我正在用OPENGL ES在Iphone中绘制一个饼图。现在我需要检查用户单击的饼的颜色。当我单击任何饼图时,它有时返回正确的值,有时不正确,有时只返回0,0,0

'(void)handleTap:(UITapGestureRecognitor*)识别器{

CGPoint lPoint=[识别器位置触摸:0在视图中:mGLView]

字节aPixel[4]; glPixelStorei(GLU包对齐,1); glReadPixels(lPoint.x、lPoint.y、1、1、GL_RGBA、GL_无符号字节和aPixel[0])

NSLog(@“%i”,glGetError()); NSLog(@“POINT X=%f Y=%f%d%d%d”,lPoint.X,lPoint.Y,aPixel[0],aPixel[1],aPixel[2]);“

在OpenGL中,(0,0)是左下角的像素。在iOS中,它是左上角的像素。因此,您从错误的位置读取。我想象一下,在调用locationOfTouch:inView之后,您想要添加:

lPoint.y = mGLView.bounds.height - lPoint.y;

好的,我已经按照你说的做了改变,但还是不一样:(你不可能在视网膜显示器上运行,是吗?如果是这样,那么要小心,因为locationOfTouch:inVieW:以点为单位返回位置,而不是以像素为单位。否则,我建议你在手指移动时记录手指下的值,看看你是否能找出图像中像素的实际读取位置;这将是不匹配的在iOS坐标和OpenGL坐标之间。