OpenGL中如何用鼠标控制放大与缩小

marsara 2009-10-20 05:09:14
最近在做OpenGL的一个作业,碰到了些问题,想求教下高手给点帮助,作业中一部分的要求具体如下:

按住鼠标左键,在OpenGL创建的窗体里向上移动,窗体里的场景会放大(Zoom in),也就是更靠近场景中的物体,当左键抬起时停止;相反,如果按住鼠标左键,向下移动,则窗体里场景会缩小(Zoom out),也就是远离所观察到物体,然后当左键抬起时停止。

另外要求是用C来实现上述的功能的,希望最好能给点相应的代码片段,解释下实现该功能的过程,先多谢大家了。。。
...全文
1764 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicqy 2009-11-01
  • 打赏
  • 举报
回复
glut是个OpenGL的实例工具库,用的也很广泛了,提供一些OpenGL没有直接提供的功能,和简单的界面
LZ去看看glut的文档,大概会用的函数就是那个影响mouse的函数吧
realOffar 2009-10-31
  • 打赏
  • 举报
回复
你这是基于什么OS的作业?
GLUT的东西我没用过,如果是win32的话,建议先捕捉MOUSE的消息,创建全局量,然后应用glScalef()即可完成简单的。
wyl_steven 2009-10-31
  • 打赏
  • 举报
回复
void mouse(int button,int state,int x,int y)
{

switch(button)
{
case GLUT_LEFT_BUTTON:
if (state==GLUT_DOWN)
glutIdleFunc(idle1);
break;
case GLUT_LEFT_BUTTON:
if (state==GLUT_UP)
glutIdleFunc(idle2);
break;
default :break;
}
}

void idle1(void)
{

spin=spin+0.25;
glutPostRedisplay();

}

同理写idle2 spin-=0.25;

在绘图函数里加入glTranslatef(0.0,0.0,spin);
不会给我留言 我给你说
marsara 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fandh 的回复:]
在main函数中调用 glutMouseFunc(mouse);
void
mouse( int button, int state, int x, int y)中对点进行处理!当然,要保存点下去的点!
[/Quote]
嗯,当然,glutMouseFunc是肯定要用到的,不过还得再用glutMotionFunc以便在鼠标键在按下的时候调用回调函数,嗯,呵呵,这个zoom的功能我自己也已经弄出来了啊,实际上还是利用gluLookAt的函数,改变camera的x,y,z的参数,就可以实现zoom的功能了
fandh 2009-10-20
  • 打赏
  • 举报
回复
求出scale,然后在display的时候调用,当然,对应的:void
display(void)与glutDisplayFunc( display );
fandh 2009-10-20
  • 打赏
  • 举报
回复
在main函数中调用 glutMouseFunc(mouse);
void
mouse( int button, int state, int x, int y)中对点进行处理!当然,要保存点下去的点!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧