2010-12-17 3 views
1

glReadPixels를 사용하여 간단한 피킹 함수를 구현하려고했으나 하나의 색을 클릭하면 해당 객체를 클릭 한 위치에 따라 다른 값을 다시 얻었습니까? 특별한 조명 등이 없습니까? 무슨 일이야? 경우에 따라 모든 0이 반환됩니다. 나는 모든 것을 꺼 냈지만 (질감 등) 여전히 기쁨은 없습니다.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

에드 문제를 해결하는 데 도움이되는 답변을 귀하의 의견을 게시하십시오! – Burf2000

답변

1

glGetIntegerv을 (GL_VIEWPORT, _ 뷰포트);
point.y = (float)
_viewport [3] - point.y;