Android OpenGL ES 1.1 (HTC Desire) を使用しています...
私が一般的に抱えている問題はこれです:
複雑なシーンでさまざまな 3D オブジェクトをレンダリングしています。ユーザーが特定のオブジェクトをクリックしたかどうかを確認したい。このオブジェクトは部分的に隠されている可能性があるため、シーン内のほぼすべての形状として表示される可能性があります。ユーザーがシーンに表示されているオブジェクトの一部をクリックした場合にのみ、オブジェクトを「選択」できるようにします。これは、オブジェクトの交差にベクトルベースの計算を使用できないことを意味します。これは、オブジェクトの隠れた領域を簡単に考慮に入れることができないためです。
そこで、あるアイデアを思いつきました...
オブジェクトが表示されている場所はどこでもステンシル バッファーが 1 で満たされ、ステンシル バッファー内のそれ以外の場所はすべて 0 になるように、ステンシル バッファーを設定しました。ユーザーがシーン内の特定のピクセルをクリックすると、ステンシル バッファーをチェックして、オブジェクトがクリックされたかどうかを示す 1 または 0 が含まれているかどうかを確認します。
これは PC では完全に機能しますが、Android OpenGL ES 1.1 では、GL_STENCIL_INDEX がサポートされていないため、glReadPixels() を使用してステンシル バッファーから読み取ることができないようです。
ステンシル バッファからこの 0/1 を読み取る方法があるかどうかは誰にもわかりませんか? または、オブジェクトがクリックされたかどうかを判断するためのより良いアルゴリズムを考えられる人はいますか?
どうもありがとう