资源描述:
《实验四-鼠标交互》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、OpenGL的鼠标交互一、实验目的1、掌握OpenGL的鼠标按钮响应函数2、掌握OpenGL的鼠标移动响应函数3、进一步巩固OpenGL的基本图元绘制的基础二、实验环境硬件要求:PC机,主流配置,最好为独立显卡,显存512M以上。软件环境:操作系统:WindowsXP。语言开发工具:MicrosoftVisualstudio2008,VisualC++。三、实验内容与要求要求:实验课上老师要求的效果截图、及其相应代码拷贝到实验报告文档里。WORD文档命名方式:学号姓名-实验序号-实验名称。内容:1)鼠标画草图-实现鼠标点到哪,线就画到哪思路:1.在主程序注册鼠标响应和鼠标移动子函数gl
2、utMouseFunc(mymouse);glutMotionFunc(mymotion);放在display注册之后和mainloop之前2.在程序头部声明鼠标响应和鼠标移动子函数voidmyMouse(intbutton,intstate,intx,inty);voidmyMotion(intx,inty);3.构造鼠标响应子函数//鼠标按钮响应事件..voidmyMouse(intbutton,intstate,intx,inty){//鼠标左键按下—确定起始点//鼠标左键松开___画最后一个顶点,画线结束}4.构造鼠标移动子函数//鼠标移动时获得鼠标移动中的坐标--------
3、---------------------------------------------voidmyMotion(intx,inty){//鼠标移动__线画到哪}5.修改显示函数Display();附:画直线程序框架#include"stdafx.h"#includeintww,hh;//fordisplaywindowwidthandheightvoidMyinit(void);voidReshape(intw,inth);voidDisplay(void);intAPIENTRY_tWinMain(HINSTANCEhInstance,HINSTANCEhPrev
4、Instance,LPTSTRlpCmdLine,intnCmdShow){UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);char*argv[]={"hello",""};intargc=2;//must/shouldmatchthenumberofstringsinargvglutInit(&argc,argv);//初始化GLUT库;glutInitWindowSize(800,600);//设置显示窗口大小glutInitDisplayMode(GLUT_DOUBLE
5、GLUT_RG
6、B);//设置显示模式;(注意双缓冲)glutCreateWindow("鼠标画线小程序演示");//创建显示窗口Myinit();glutDisplayFunc(Display);//注册显示回调函数glutReshapeFunc(Reshape);//注册窗口改变回调函数glutMainLoop();//进入事件处理循环return0;}voidMyinit(void){glClearColor(0.0,0.0,0.0,0.0);glLineWidth(3.0);}//渲染绘制子程序--------------------------------------------------
7、------------------------voidDisplay(void){glClear(GL_COLOR_BUFFER_BIT);//刷新颜色缓冲区;glBegin(GL_LINES);glVertex2f(0,0);glVertex2f(ww,hh);glEnd();glutSwapBuffers();//双缓冲的刷新模式;}//-----------------------------------------------voidReshape(intw,inth)//窗口改变时自动获取显示窗口的宽w和高h{glMatrixMode(GL_PROJECTION);//投影
8、矩阵模式glLoadIdentity();//矩阵堆栈清空glViewport(0,0,w,h);//设置视区大小gluOrtho2D(0,w,0,h);//设置裁剪窗口大小ww=w;hh=h;}2)鼠标画线阅读OpenGL鼠标画线程序,能够实现在绘制窗口用鼠标交互绘制若干条直线,鼠标左键首先按下,确定直线的起始点,鼠标左键按下同时移动,看到画线过程,鼠标左键松开时,确定直线的终点,可重复画多条直线。实现主要思路:1)写出画静止若干条直线程序框