我的多边形不会移动,我尝试了很多东西,我认为glClear(GL_COLOR_BUFFER_BIT);
或glutMainLoop();
不会完成他们的工作。所以第一张照片保持不变。没有动画。
float x=0;
float y=0;
float b=0;
void displayCB(void)
{
glClear(GL_COLOR_BUFFER_BIT);
kvadrat();
}
void kvadrat()
{
glBegin(GL_POLYGON);
glColor3f(1, 0, 0); glVertex2d(0.5-x, 0.5-y);
glColor3f(1, 0, 0); glVertex2d(0.5-x, -0.5-y);
glColor3f(1, 0, 0); glVertex2d(-0.5-x, -0.5-y);
glColor3f(1, 0, 0); glVertex2d(-0.5-x, 0.5-y);
glEnd();
Sleep(1999);
glFlush();
x=x+0.01; // I modified this value so it will always be between 0.5 and -0.5,
//this is just example
}
int main(int argc, char *argv[])
{
int win;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(800,600);
win = glutCreateWindow("Elementi");
glClearColor(0.0,0.0,0.0,0.0);
glutDisplayFunc(displayCB);
glutKeyboardFunc(keyCB);
glutMainLoop();
return 0;
}
答案 0 :(得分:0)
我认为你可能每两秒只移动一个非常小的增量位置,所以图像看起来是静态的,但事实并非如此,它只是变化很慢。尝试取出Sleep(1999),看看你的动画效果是否更好。
如果您需要随着时间的推移制作动画,最好使用glutGet(GLUT_ELAPSED_TIME)来计算自上一帧以来经过了多长时间并使用它来扩展您的增量。
答案 1 :(得分:0)
我修复了glutPostRedisplay();
的问题//通知GLUT显示已更改