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