OpenGL编程(三)让矩形动起来

上次实现了在窗口中添加一个了一个矩形。这次的任务是在上次代码的基础上,让那个矩形动起来。

1、思路
要看到动态的效果,首先添加一个定时器,规定的时间刷新一次窗口;不断修改矩形的位置,使其在时间轴上达到动态的效果。

2、注册定时器
glutTimerFunc(33, timerFunction, 1); 33表示33毫秒后调用,timerFunction为回调函数,1为区别值(用以区分不同的定时器)。然后我们在timerFunction函数里修改矩形的坐标。因为注册一次定时器(glutTimerFunc)才会回调一次,所以要达到持续的效果,在timerFunction函数体内的末尾再是注册定时器回调自己glutTimerFunc(33, timerFunction, 1);

3、在定时器回调函数体内修改矩形的位置
假设矩形的左下角的位置为(x1, y1),每次回调我们修改x1,y1的值,让x1,y1加上或减去一个步长(向左运动是加,向右运动是减;向上运动是加,向下运动是减)。当x1的值大于等于窗口的宽度减去矩形的长(x1 > windowWidth - size)时x1开始改方向为减去步长x1 -= xstep;;当x1的值小于0时x1再次改为反方向为加步长(x1 += xstep;);同理y1也使用同样的方法处理。

4、重绘窗口
glutPostRedisplay();每次修改矩形的位置时要调用该函数重绘窗口。该函数的调用不是马上让GULT马上重绘窗口,而是先告诉GULT窗口已经改变,需要重新绘画,等GULT再次调用glutMainLoop()函数时会重回窗口,以达到窗口改变的效果。

完整代码如下:

#include <windows.h>
#include <gl/glut.h>

//animation.cpp

GLfloat x1 = 100.0f;
GLfloat y1 = 150.0f;
GLsizei size = 50;

GLfloat xstep = 5.0f;
GLfloat ystep = 5.0f;

GLfloat windowWidth = 300.0f;
GL
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值