关于OpenGL 动画的问题
请教各位大侠,最近我在做关于OpenGL动画方面的作业。我要做的是一个显示模块,希望在场景最左边随机产生物体(假设长方体)并匀速向右运动。我的代码如下:
#include "windows.h"
#include <GL/gl.h>
#include <GL/glaux.h>
#include <gl/glut.h>
float step;
void init(void);
void display(void);
void quad(void);
void reshape (int w, int h);
void keyboard(unsigned char key, int x, int y);
void Animate(void);
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (0.5, 0.7, 1.3);
glLoadIdentity ();
gluLookAt (0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0);
glTranslatef(step,0.0,0.0);
for(int i=0;i<2;i++)
{
quad();
glTranslatef(2.0,2.0,0.0);
quad();
}
glFlush ();
}
void quad(void)
{
glBegin(GL_QUADS); // 绘制正方形
glVertex3f(-7.0f, 0.5f, 0.0f); // 左上
glVertex3f( -5.0f, 0.5f, 0.0f); // 右上
glVertex3f( -5.0f,-0.5f, 0.0f); // 左下
glVertex3f(-7.0f,-0.5f, 0.0f); // 右下
glEnd(); // 正方形绘制结束
}
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode (GL_MODELVIEW);
}
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 27:
exit(0);
break;
}
}
void Animate(void)
{
step+=0.001;
display();
}
void main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize (500, 200);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutIdleFunc(Animate);
glutMainLoop();
}
可我怎么才能在display函数中随机产生一个长方形,并跟着前一帧长方形一起向右匀速运动,在代码中我是手动添加一个三个方形,我希望做到随机产生。希望各位大侠指点。在下先谢谢咯。