2010-12-17 64 views
1

我試圖用glReadPixels實現一個簡單的拾取功能,但是當我點擊一種顏色的對象時,根據點擊該對象的位置,我得到不同的值。沒有特殊照明等?這是怎麼回事?有時全部零都返回。我把所有東西都關掉了(紋理等),但仍然沒有快樂。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在觸摸座標?你是否渲染OpenGL顛倒?請記住,OpenGL從下到上呈現,並且從上到下呈現出來。 – 2010-12-17 01:26:36

+0

好點,是的,cgpoint是觸點,所以我必須以某種方式反轉它? – Burf2000 2010-12-17 08:04:14

+0

Ed在您幫助解決問題時發佈您的評論作爲答案! – Burf2000 2010-12-17 09:40:24

回答

1

glGetIntegerv(GL_VIEWPORT,_ 視口);
point.y =(float)
_viewport [3] - point.y;