0

現在、OpenGL ES 2.0 でピンを含むオブジェクトを描画し、CAEAGLLayer に表示しています。カラーピッキングでオブジェクトを識別できます。たとえば、正しい位置にラベルを描画するために、ピンのワールド座標の画面座標を計算する必要があります (ココア タッチ コンポーネントを使用したい)。画面座標を計算する適切な方法は何ですか (非表示のオブジェクトは無視する必要があります)。画像全体を実行し、各ピクセルを使用してカラー ピッキングを実行するのは、正しい方法とは思えません。

前もって感謝します。

4

2 に答える 2

1

Apple は独自の GL 数学関数を提供しています。GLKMathUtils のドキュメントを参照してください。

Lukas が指摘したように、投影 (ワールド -> 画面座標) または非投影 (スクリーン -> 世界座標) に使用できます。

したがって、マトリックス変換に既に GLKit を使用している場合は、これを使用できます。

GLKVector3 screenPoint = GLKMathProject(modelPoint, modelViewMatrix, projectionMatrix, viewport);
于 2013-10-09T14:02:36.063 に答える
0

私はこの質問に自分で答えることができました。OpenGL の一部のバージョンでは glProject() が利用可能で、画面上の頂点の位置を計算するために使用できます。残念ながら、この関数は OpenGL ES 2.0 では使用できないため、自分で計算を行うか、関数 glProject() を提供するOpenGL Mathematicsのような数学ライブラリを使用する必要があります。

#include "matrix_transform.hpp"
#include "transform.hpp"

vec3 pinScreenPosition = glm::project(vec3(0,0,0), modelMatrix, projectionMatrix, vec4(0, 0, screenDimensions.x * screenScale, screenDimensions.y * screenScale));
于 2013-10-09T13:47:48.370 に答える