2010-11-12 3 views
0

Я рисую символ PIE в Iphone, с OPENGL ES. Теперь мне нужно проверить цвет пирога, где пользователь нажал. Когда я нажимаю любой пирог, он иногда возвращает правильные значения, а иногда и не правильно, а иногда просто возвращает 0,0,0.Проблема с Iphone glReadPixels

«(пустоты) 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]);

ответ

1

В OpenGL (0, 0) находится нижний левый пиксель. В iOS это верхний левый пиксель. Итак, вы читаете не то место. Я предположил бы, что вы хотите добавить, после вызова locationOfTouch: INview:

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

Хорошо, я изменился в соответствии с тем, что вы сказали, но это все еще не то же самое :( –

+0

Там нет никакой возможности вы работаете на дисплее Retina есть? Если да, тогда будьте осторожны, потому что locationOfTouch: inVieW: возвращает местоположение в точках, а не в пикселях. В противном случае я предлагаю вам записывать значения под пальцем при его перемещении и посмотреть, можете ли вы определить, где на изображении пиксели на самом деле считываются, это будет некоторая несоответствие между координатами iOS и координатами OpenGL. – Tommy

Смежные вопросы