中易网

glutTimerFunc函数出问题!!

答案:2  悬赏:80  
解决时间 2021-03-22 01:09
用opengl写的一个简单的代码,其中注册了定时器回调函数ontime(),在ontime()中改变point1_x,point1_y的值,然后调用glutPostRedisplay()重绘窗口。但是程序运行后画的直线只变化了一次,应该是每过一秒变化一次的。代码如下:
#include
#include
#include

//-----全局变量----------------------
GLfloat point1_x=0.25;
GLfloat point1_y=0.25;
GLfloat point2_x=0.75;
GLfloat point2_y=0.25;
//-----glutTimerFunc()的响应函数------
void ontime(int time)
{
point1_y +=0.1;
point2_y +=0.1;
}
//-----显示函数-----------------------
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
glVertex3f(point1_x,point1_y,0.0);
glVertex3f(point2_x,point2_y,0.0);
glEnd();
glFlush();
}
//------初始化函数
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
}

int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("hello");
init();
glutDisplayFunc(display);
glutTimerFunc(1000,ontime,0.1);
glutMainLoop();
return 0;
}

ontime函数贴错了
void ontime(int time)
{
point1_y +=0.1;
point2_y +=0.1;
glutPostRedisplay();
}
最佳答案
void ontime(int time)
{
point1_y +=0.1;
point2_y +=0.1;
glutPostRedisplay();
glutTimerFunc(1000,ontime,0.1);
}
全部回答
我感觉是这样的:你在specialkeys方法的末尾调用gluttimerfunc,感觉每按一次箭头就会触发一个新的计时器,最后可能是n个计时器同时刷新就会越来越快。如果是我的话,我会在main里触发一个计时器,然后键盘函数里只是去初始化下运动状态。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求女主小说,要求双穿
杨梅个性签名怎么写
有领子的衣服怎么搭配裤子
腾讯手机管家能把小火箭换成百分比吗?如果能
我女友说我好耨。这道底是什么意思
三草茶对身体有什么危害吗?有什么副作用吗?
听惯了hifi音质,再去听杜比,是什么感觉
蚕宝宝结茧了,以后怎么养
京东用什么快递发货(发到华侨大学,那边没打电
胶南的哪家防盗门的价格。实惠质量好?
一个男生不喜欢我,但我喜欢他,他为什么要和
大学毕业时一般都发什么证阿
急问:天津红桥区针对偏瘫出诊针灸师
一辆火车从甲地开往乙地,已经行了全程的五分
饥饿鲨(OCZ) Trion 100 240G怎么样
推荐资讯
在一个旅游城市里,宾馆和饭店最多的地方,做
2015年11.9全国消防宣传主题是什么?
包粽子糯米需要泡多久?
上海什么狗狗不能养的
我的儿子是郑州绿城双语小学的,写字歪歪扭扭
我的邮政借记卡为什么不能绑定支付宝说什么与
为什么很多人都觉得猫很诡异,并且害怕猫
月亮湾海参怎么样
吃蛤蟆油有什么好处呀!
怎样才能知道收古钱币的老总不是骗子呢
有没有做过手工活外发的人,有靠谱的项目吗
当涂那里可以钓鱼?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?