问题描述
我有一个简单的 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.15);
glColor3f(0.0,1.0);
glVertex2f(0.15,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);
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,我明白了。已经做了他所说的一切,但真正的解决方案是让 scene 函数完成它的工作,我不必在我的鼠标函数中调用 glScalef。
再次感谢。