iPhone glReadPixels 问题
我正在 Iphone 中使用 OPENGL ES 绘制 PIE 字符。现在我需要检查用户单击的饼图的颜色。当我单击任何饼图时,它有时返回正确的值,有时不正确,有时只返回 0,0,0。
'(void)handleTap:(UITapGestureRecognizer *)识别器{
CGPoint lPoint = [识别器locationOfTouch:0 inView:mGLView];
字节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]);'
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]);'
在 OpenGL 中,(0, 0) 是左下角像素。在 iOS 中,它是左上角的像素。所以你是从错误的位置阅读的。我想你想在调用 locationOfTouch:inView 之后添加:
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: