Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Использование gluUnProject() в OpenGL


Автор: Sergio 12.7.2007, 18:51
Здараствуйте. Хочу сделать передвинуть поинт на 10 пикселей вверх. Не получается smile 
Вот код:
Код

GLdouble objx = 0, objy = 0, objz = 0;

void GetPixelPosition(int x, int y, int z) {
    double modelview[16], projection[16];
    int viewport[4];

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

    gluUnProject(x, y, z, modelview, projection, viewport, &objx, &objy, &objz);
    cout<<objx<<"\t"<<objy<<"\t"<<objz<<endl;
}

void display(void)
{
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBegin(GL_POINTS);

        glColor3d(1.0, 1.0, 1.0);
        GetPixelPosition(0, 10, 0);
        glVertex3d(objx, objy, objz);    

    glEnd();

    glutSwapBuffers();
    glFlush();
}

void reshape (int w, int h)
{
    glViewport (0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode (GL_PROJECTION);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize (500, 500); 
    glutInitWindowPosition (100, 100);
    glutCreateWindow (argv[0]);
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape);
    glutMainLoop();
    return 0;
}

Что я не правиль делаю?
Заранее спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)