Oleg Danu
Oleg Danu

Reputation: 4159

Iphone glReadPixels problem

I am drawing a PIE char in Iphone, with OPENGL ES. Now I need to check the color of the pie where user clicked. When I click any pie, it sometimes returns correct values, and sometimes not correct, and sometimes just returning 0,0,0.

'(void) handleTap:(UITapGestureRecognizer *) recognizer{

CGPoint lPoint = [recognizer locationOfTouch:0 inView:mGLView];

Byte aPixel[4]; glPixelStorei(GL_PACK_ALIGNMENT, 1); glReadPixels( lPoint.x, lPoint.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &aPixel[0] );

NSLog(@"%i",glGetError()); NSLog(@"POINT X = %f Y = %f %d %d %d",lPoint.x, lPoint.y, aPixel[0],aPixel[1],aPixel[2]);'

Upvotes: 0

Views: 941

Answers (1)

Tommy
Tommy

Reputation: 100662

In OpenGL, (0, 0) is the bottom left pixel. In iOS it's the top left pixel. So you're reading from the wrong location. I'd imagine you want to add, after the call to locationOfTouch:inView:

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

Upvotes: 1

Related Questions