gluUnproject Вопрос / вопрос о движущемся персонаже - PullRequest
1 голос
/ 13 июня 2011

Привет каждые1 Я читал много постов здесь о том, как использовать gluUnproject, и я думаю, что я получил в основном то, что он делает. но да, моя проблема заключается в следующем ... у меня есть 1 плоскость, и если я нажимаю там, нет проблем, мой объект попадает туда, но если я хорошо щелкаю за его пределами, мой объект исчезает из любой идеи, почему он делает это и как я могу это исправить? и это моя функция gluUnproject

GetOGLPos(float x, float y)
{
    GLint viewport[4];
    GLfloat depth[2];
    GLdouble modelview[16];
    GLdouble projection[16];
    GLfloat winX, winY, winZ;
    GLdouble posX, posY, posZ;

    glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
    glGetDoublev( GL_PROJECTION_MATRIX, projection );
    glGetIntegerv( GL_VIEWPORT, viewport );

    winX = (float)x;
    winY = (float)viewport[3] - (float)y;
    glReadPixels( x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, depth );

    gluUnProject( winX, winY, depth[0], modelview, projection, viewport, &posX, &posY, &posZ);

    std::cout<< posX<<" "<<posZ<<std::endl;
    PosP.x = posX;
    PosP.z = posZ;

    PosP.y = 20.0f;
}

Я просто печатаю значения, чтобы узнать, куда движется объект, а PosP - это Вектор, и я перемещаю моего персонажа, передавая ему эту переменную (кстати, в этом проекте у меня нет физики или чего-то подобного)

1 Ответ

1 голос
/ 13 июня 2011

Проверьте глубину, которую вы читаете из буфера глубины.Если значение глубины является значением glClearDepth, которое вы установили (или достаточно близко к нему), то вы знаете, что там ничего не отображалось.Поэтому не размещайте объект в этом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...