2010-11-27 2 views
4

gluProject 함수를 사용하여 "렌더링"후 2 차원 창에서 점 좌표를 얻으려고합니다. 문제는 내가 이상한 결과를 얻는다는 것입니다. 예 : x = 16.5로 포인트를 얻었습니다. 내가 gluProject을 사용할 때 x = -6200.0이됩니다.OpenGL gluProject() - 이상한 결과

내가 "gluProject"이라고 알면 "렌더링"한 다음 화면에 그 지점의 픽셀 위치를 가져야합니다. 맞습니까? 어떻게 그 이상한 결과를 화면상의 픽셀 좌표로 변환 할 수 있습니까?

도움 주셔서 감사합니다. ("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를 생각하고 있습니다. –