TUIO之TuioDemo

来源:互联网 发布:矩阵的卷积与向量卷积 编辑:程序博客网 时间:2024/06/10 18:18
用VS生成的依赖项关系图,和想象的一样,libTUIO这个项目是TUIO提供的库一样的存在,剩下的三个项目TuioDemo、SimpleSimulator、TuioDump都调用到了libTUIO里的方法。


TuioDemo的函数关系图:



可以看到是由run()这个函数开始进行调用其他函数的,所以先看看run()这个函数吧。
1、void run(); ——public
void TuioDemo::run() {
  running=true;
  while (running) {
  drawObjects();
  processEvents();
  SDL_Delay(10);
  }
}
设置running为true,running是TuioDemo的私有成员变量,bool类型。
当running为true时,开始执行drawObject()、processEvent()这两个函数。现在不知道SDL_Delay(10)是什么。
接着看drawObject()



2、void drawObjects(); ——private

字面意思理解,应该是一个关于绘制对象的函数。
清屏,这里用到了glClear()函数。
//draw the cursors 不太明白什么是cursors,绘制鼠标?光标?
构造一个list容器,保存TuioCursor指针的list,也就是说保存着指向TuioCursor对象的指针。这个cursorList的内容是从tuioClient获取的active TuioCursor list。tuioClient是TuioDemo的私有成员变量。
锁定TuioCursor list,为了避免存取/使用过程中对数据的改变。

对cursorList使用迭代器来遍历。
对list中的每个tuioCursor对象
使用TuioCursor类从TuioContainer类继承的方法getPath()获取path,path为TuioPoint类型的list。TuioPoint类是一个简单的容器,实用类,处理TUIOposition,另一方面,TuioPoint是TuioCursor和TuioObject的基类。

使用openGL绘制线条
用一个for循环来从path中把若干个点取出来。
//绘制finger tip
将TuioCursor list解锁
//绘制对象
//绘制blobs



3、void processEvents();——private应该是一个处理事件的函数
定义了一些TuioDemo中的操作。

ESC-退出
F1-全屏
v-设置verbose=!verbose;这应该是一个flag,很多函数都用到了。





1 0
原创粉丝点击