2010-12-17 3 views
1

Я пытаюсь реализовать простую функцию выбора, используя glReadPixels, однако, когда я нажимаю на объект, который имеет 1 цвет, я получаю разные значения обратно в зависимости от того, где я нажал на этот объект? Там нет специального освещения и т. Д.? Что происходит? Иногда возвращаются все нули. Я отключил все (текстуры и т. Д.), Но до сих пор нет радости.iPhone OpenGL ES: glReadPixels не работает

Я думал, что эти функции возвращают цвет пикселя, на который вы нажимаете?

- (void)getPixelColour:(CGPoint)point { 

    Byte pixelColour[4]; 
    glReadPixels(point.x, point.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixelColour); 

    NSLog(@"%d %d %d", pixelColour[0], pixelColour[1], pixelColour[2]); 

} 

Обновление: добавлено это исправить:

glGetIntegerv(GL_VIEWPORT, __viewport); 
point.y = (float)__viewport[3] - point.y; 
+4

Являются ли ваши координаты CGPoint in Touch? Вы отдаете OpenGL upsidedown? Помните, что OpenGL отображает снизу вверх, а прикосновения - сверху вниз. –

+0

Хорошая точка, да cgpoint - это точка касания, поэтому мне нужно как-то инвертировать ее? – Burf2000

+0

Ed Опубликуйте свой комментарий в качестве ответа, поскольку вы помогли решить проблему! – Burf2000

ответ

1

glGetIntegerv (GL_VIEWPORT, _ видового экрана);
point.y = (float)
_viewport [3] - point.y;

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