2010-12-17 15 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;