1

glReadPixels を使用して単純なピッキング機能を実装しようとしていますが、1 色のオブジェクトをクリックすると、そのオブジェクトをクリックした場所に応じて異なる値が返されますか? 特別な照明などはありませんか?どうしたの?場合によっては、すべてゼロが返されます。私はすべて(テクスチャなど)をオフにしましたが、それでも喜びはありません。

この関数は、クリックしたピクセルの色を返すと思いましたか?

- (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

1 に答える 1

1

glGetIntegerv( GL_VIEWPORT, _ビューポート );
point.y = (float)
_viewport[3] - point.y;

于 2010-12-18T01:12:45.130 に答える