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