Где я могу вызвать gluUnproject? - PullRequest
0 голосов
/ 09 декабря 2010

Это действительно простой вопрос.

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

Я посмотрел здесь функцию , но это не говорит мне, есть ли какое-то предварительное условие.

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

    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 ]

2 голосов
/ 09 декабря 2010

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

1 голос
/ 09 декабря 2010

Реализация Mesa не требует текущего контекста.

...