在鼠标上绘制对象单击在OpenGL上使用两个视口

时间:2016-06-12 01:52:49

标签: c++ opengl viewport mouseover viewport3d

我试图在我的opengl程序中点击鼠标来渲染多边形,但我遇到了问题。基本上它在我使用一个视口时有效,但是当我尝试放置两个视口时,方块不再出现在正确的位置。计算正确位置的鼠标功能是上面的GMouse。

void GMouse(int button, int state, int x, int y){

    if (button == GLUT_LEFT_BUTTON)
       if (state == GLUT_DOWN) { // Zoom-in
           y=250-y;
           m=1;
           posX=x;
           posY=y;
       }
    if (button == GLUT_RIGHT_BUTTON)
       if (state == GLUT_DOWN) { // Zoom-out      
           if (angle <= 130) angle += 5;
       }

    visao();    
    glutPostRedisplay();    
}

我使用y = 250-y,因为视口的宽度是250,但是窗口大小是(500,500),并且InitWindowPosition是(0,0),如上面的view()函数中所述。

void view(){    
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    
    defineIluminacao();    
    glMatrixMode(GL_VIEWPORT);       
    glViewport(0,100,250,250);    
    visao();    
    display(); 
    glViewport(300,0,200,200);    
    visao2();    
    glTranslatef(-30.0f, 0.0f, 50.0f);    
    glRotated(90.0f, 0.0f, 1.0f, 0.0f);    
    display();
}

0 个答案:

没有答案