0

我正在尝试在我的 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();
}
4

0 回答 0