我有一个简单的OpenGL对象,它已经定义了一定的glScalef大小。它需要glutMouseFunc来使它像我想象的那样工作。所以,这就是我想象的:
在GLUT_LEFT_BUTTON
对象上需要增大0.1,所以:glScalef(scalesize+0.1,scalesize+0.1,0.0.);
polygon();
在GLUT_RIGHT_BUTTON
对象上需要缩小0.1,所以:glScalef(scalesize-0.1,scalesize-0.1,0.0);
polygon();
这是我的多边形功能:
void polygon(void){
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex2f(-0.15, -0.15);
glColor3f(0.0,0.0,0.0);
glVertex2f(-0.15, 0.15);
glColor3f(0.0,0.0,1.0);
glVertex2f(0.15, 0.15);
glColor3f(0.0,1.0,0.0);
glVertex2f(0.15, -0.15);
glEnd();
glEnable (GL_LINE_STIPPLE);
glLineWidth(3.0);
glLineStipple (6, 0x1C47);
glBegin(GL_LINES);
glColor3f(0.0,0.0,0.0);
glVertex2f(-0.25, -0.25);
glVertex2f(-0.25, 0.25);
glVertex2f(0.25, 0.25);
glVertex2f(0.25, -0.25);
glVertex2f(-0.25, 0.25);
glVertex2f(0.25, 0.25);
glVertex2f(-0.25, -0.25);
glVertex2f(0.25, -0.25);
glEnd();
}
这是我的场景功能:void scene(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScalef(scalesize,scalesize,0.0);
polygon();
glPopMatrix();
glFlush();
}
float scalesize = 1.0;
现在我不知道如何防止缩放低于0.15,关于我的对象大小。我试过用if语句来检查scalesize是否大于1.0,但没有成功。有解决方案吗?
感谢好了,感谢@radical7,我明白了。已经按照他说的做了,但真正的解决办法是让现场函数完成它的工作,我不需要在鼠标函数中调用glScalef。
再次感谢。