2009-11-27 3 views
0

다음 코드는 오류를 발생시키고 이해할 수 없습니다.OpenGL의 gluUnProject 함수

GLdouble objX,objY,objZ; 
GLdouble modelview1[4][4], projection1[4][4]; 
GLint viewport1[4]; 
glGetDoublev(GL_MODELVIEW_MATRIX, *modelview1); 
glGetDoublev(GL_PROJECTION_MATRIX, *projection1); 
glGetIntegerv(GL_VIEWPORT, viewport1); 

gluUnProject(x, y, z, modelview1, projection1, viewport1, objX , objY , objZ);` 

오류가 :

error C2664: 'gluUnProject' : cannot convert parameter 4 from 'GLdouble [4][4]' to 'const GLdouble []' 
+0

을, 왜 당신은 그것을 허용하지 않습니다? –

답변

3

이 변수 modelview1 및 projection1 잘못된 유형이 보인다.

내가 (여기 http://www.3dkingdoms.com/selection.html) 다음 코드 발견 : 아래의 대답은 오른쪽에있는 것 같다으로

// This function will find 2 points in world space that are on the line into the screen defined by screen-space(ie. window-space) point (x,y) 
    double mvmatrix[16]; 
    double projmatrix[16]; 
    int viewport[4]; 
    double dX, dY, dZ, dClickY; // glUnProject uses doubles, but I'm using floats for these 3D vectors 

    glGetIntegerv(GL_VIEWPORT, viewport);  
    glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix); 
    glGetDoublev (GL_PROJECTION_MATRIX, projmatrix); 
    dClickY = double (g_WindowHeight - y); // OpenGL renders with (0,0) on bottom, mouse reports with (0,0) on top 

    gluUnProject ((double) x, dClickY, 0.0, mvmatrix, projmatrix, viewport, &dX, &dY, &dZ); 
    ClickRayP1 = Vector3 ((float) dX, (float) dY, (float) dZ); 
    gluUnProject ((double) x, dClickY, 1.0, mvmatrix, projmatrix, viewport, &dX, &dY, &dZ); 
    ClickRayP2 = Vector3 ((float) dX, (float) dY, (float) dZ); 
+0

네, 맞습니다. 덕분에 –

+0

당신은 그 해결책을 받아 들일 수 있습니까? –