在”ARToolkit手札之显示菜单(一) “这篇博客中,我利用标识卡的旋转角度显示了菜单的输出状态,那么我可以根据菜单的输出状态,指定绘制虚拟物体。
nSel表示菜单目前切换到那个字符串,将这个参数传递到static void draw(void)函数,就可以指定绘制哪个虚拟物体了。
在”ARToolkit手札之显示菜单(一) “的基础上,修改static void draw(void)函数,如下。
static void draw(int nSel)
{
……
……
……
//glTranslatef( 0.0, 0.0, 25.0 );
//glutSolidCube(50.0);
if(nSel==1) glutSolidCube(50.0); // nSel =1绘制立方体
else if(nSel==2) glutSolidSphere(25.0,150,150); // nSel=2绘制球体
else // nSel=0绘制茶壶
{
glRotatef(90,1,0,0);
glutSolidTeapot(50.0);
}
glDisable( GL_LIGHTING );
glDisable( GL_DEPTH_TEST );
}
【补充】不要忘记在声明部分修改static void draw(void);
//static void draw(void);
static void draw(int nSel);
运行结果如下。
图1【当n=4的情况下】angle在[0,29]之间,nSel=0,菜单切换到”Teapot”,绘制茶壶
图2【当n=4的情况下】angle在[30,59]之间,nSel=1,菜单切换到”Cube” ,绘制立方体
图3【当n=4的情况下】angle在[60,89]之间,nSel=2,菜单切换到”Sphere” ,绘制球体