これは、関連する質問として表示される場合があります。
iOS での OpenGL ES 2.0 オブジェクト ピッキング
これは、カラーピッカーが良い解決策であり、それについて読んだ後に実際に次のように述べています。
http://www.lighthouse3d.com/opengl/picking/index.php?color1
それは非常に単純な解決策のように思えるので、これは私にこの質問をもたらします
残念ながらopengl es 1.0を使用していますが、2.0で実行しようとしているため、その質問で説明されている機能にアクセスできません。
しかし、理論は単純に思えます。私がすべきことは次のとおりです。
タッチが始まると、オブジェクトを固有の色でレンダリングします。
タッチが終了すると、その位置からピクセルを取得し、色をチェックしてオブジェクトを取得します。(おそらく glReadPixels で)
問題は、「バックバッファーにレンダリングしてそこから読み取る」方法がわからないことです。
私のコードはこれまで単に「Draw」を使用していましたが、glBindのようなことを他のバッファに行う必要があると思いますが、助けていただければ幸いです。
私の描画コードは次のようなものです:
glClearColor(0, 0, 0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
// Set the Projection Matrix
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(60), 2.0/3.0, 0, 50);
glUseProgram(_programHD);
glBindVertexArrayOES(_vao);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, _textureBuffer[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glUniform1i(uniforms[UNIFORM_TEXTURE_HD], 1);
// Drawing starts here //
// Pass the Model View Matrix to Open GL
_modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrix,rotationMatrix);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX_HD], 1, GL_FALSE, _modelViewProjectionMatrix.m);
// Change texture coordinates to draw a different image
glUniform2fv(uniforms[TEXTURE_OFFSET_HD], 1, offSet.v);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
//glUniform2i(uniforms[TEXTURE_OFFSET], 7, -5);
glUniform2fv(uniforms[TEXTURE_OFFSET_HD], 1, borderHD.v);
glDrawElements(GL_LINE_STRIP, 6, GL_UNSIGNED_SHORT, 0);
glBindVertexArrayOES(0);
glUseProgram(0);
より理解しやすいように、図面の計算を削除しました。ポイントは、私が描いている「どこ」に指定した場所がどこにも見えないということです。
ご協力いただきありがとうございます。