2010-12-08 4 views
0

Это очень простой вопрос.Где я могу назвать gluUnproject?

Где я могу назвать gluUnproject? Нужен ли мне текущий контекст openGL?

Я искал function here, но это не говорит мне, есть ли какое-либо предварительное условие.

Я хочу, чтобы это сделать:

GLdouble near[3]; 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    eq::Matrix4f projection; 
    getView()->getProjection(projection); 
    GLdouble *projMatrix = Matrix4d(projection).array; 
    glMultMatrixd(projMatrix); 

    glMatrixMode (GL_MODELVIEW); 
    glLoadIdentity(); 
    eq::Matrix4f camera; 
    getView()->getCamera(camera); 
    GLdouble *modelMatrix = Matrix4d(camera).array; 
    glMultMatrixd(modelMatrix); 

    const PixelViewport pvp = event.context.pvp; 
    int viewport[4] = {pvp.x, pvp.y, pvp.w, pvp.h}; 

    // SCREEN HEIGHT NOT CONTEXT HEIGHT 
    const int y = (int)getWindow()->getPixelViewport().h - event.pointerButtonPress.y; 

    gluUnProject(
          event.pointerButtonPress.x, 
          y, 
          0.0, 
          modelMatrix, 
          projMatrix, 
          viewport, 
          &near[0], 
          &near[1], 
          &near[2] 
          ); 

    near[2] = 1.0f; 
    GLdouble far[3] = {near[0],near[1], -1.0f}; 

На моем сервере узла, вместо того, чтобы передать его в моих делают узлы, и они возвращают результат. Сервер не имеет контекста openGL. Можно ли еще вызвать gluUnproject?

ответ

2

gluUnProject не является частью OpenGL. Это часть GLU. Технически вы можете использовать все функции GLU, которые не имеют доступа к OpenGL, не имея контекста вообще. gluUnProject - такая функция.

1

Mesa's implementation, похоже, не нуждается в текущем контексте.

+0

Я не думал, что это будет, тем более, что я не использую `glGet` ни для чего. – 2010-12-08 22:38:19

Смежные вопросы