OpenGL--动作管理

来源:互联网 发布:eplan软件 64位 编辑:程序博客网 时间:2024/05/01 03:16

目前,我在做一个计算机图形学的project,要求做一个可以移动控制的简易机器人。因而开始学习OpenGL。

今天,先来研究一下如何给2D/3D图形添加动作。

一、原理

     1.修改显示图形所用的各种参数;

     2.重绘图形。利用视网膜短暂停留的机制实现图形的动作

二、实现函数

1.   void glutTimerFunc(unsigned int msecs,void (*func)(int value), value);

     这是一个回调函数,但是只能执行一次,因而需要在被调用的函数末尾再次调用此定时器回调函数。

2.

      void glNewList(GLuint list,GLenum mode);
      void glEndList(void);
      这对函数可以预先编译一下需要用来绘图的命令,存在一个显示列表里边,方便以后重复调用。
3.
      glPushMatrix();glPopMatrix()
      把平移、缩放等操作放在这对函数中间,可以消除上一次的变换对本次变换的影响,使
本次变换是以世界坐标系的原点为参考点进行的。
     关于这个有以下四点解释:
    1)OpenGL 中的modelview矩阵变换是一个马尔科夫过程:上一次的变换结果对本次变换有影响,上次modelview变换后物体在世界坐标系下的位置是本次modelview变换的起点。默认下,本次变换和上次变换不独立。
    2)OpenGL物体建模实际上是分两步进行的。第一步,在世界坐标系的原点位置绘制出该物体;第二步,通过modelview变换矩阵对世界坐标系原点出的物体进行仿射变换,将该物体移动到世界坐标系的目标位置处。
    3)将modelview 变换放在glPushMatrix和glPopMatrix之间可以使本次变换和上次变换独立。
    4)凡是使用glPushMatrix()和glPopMatrix()的程序一般可以判定是采用世界坐标系建模。即世界坐标系固定,modelview矩阵移动物体。


    
0 0
原创粉丝点击