2010-11-27 20 views
4

gluProject関数を使用して、 "レンダリング"の後に2dウィンドウのポイント座標を取得することにします。問題は、私は奇妙な結果を得ることです。たとえば、x = 16.5の点があります。 gluProjectを使ってx = -6200.0を得ます。OpenGL gluProject() - 奇妙な結果

私がgluProjectを理解していれば、「レンダリング」の後で画面上にその点のピクセル位置を取得する必要があります - そうですか?その奇妙な結果を画面上のピクセル座標に変換するにはどうすればよいですか?

ありがとうございました!

コードIは、(「sum1stolemyname」によって)を使用:あなたは世界に「線」を構築することができるように

GLdouble modelview[16], projection[16] 
GLint viewport[4]; 

glGetDoublev(GL_MODELVIEW_MATRIX, *modelView); 
glGetDoublev(GL_PROJECTION_MATRIX, *projection); 
glGetIntegerv(GL_VIEWPORT, *viewport); 

double tx, ty, tz; 

for(i = 0; i < VertexCount; i++) 
{ 
    gluProject(vertices[i].x, vertices[i].y, vertices[i].z, 
    modelview, projection, viewport, 
    &tx, &ty, &tz) 
} 
+1

これはコンパイルされません。 *演算子と&演算子を混在させています。 –

+0

が修正されました。ありがとう! – MattheW

答えて

2

うん、それは、残念ながらそれは限り遠く面としてそれをしないん。 3D空間で描画しているピクセルの実際の位置を示すものではありません。あなたができることは、画面からあなたがgluProjectから得たポイントまで直線を作って、それを使ってジオメトリとの交点を見つけて3D空間内のポイントを得ることです。または、遠方の平面がより合理的な距離になるように入力行列とビューポートを変更することもできます。

+1

私の悪い私はGLUnProjectを考えています。 –