您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > openGL设计报告
计算机系统综合课程设计简单的OpenGL动画设计报告学生陈鲁蔡滨班级成教02计算机本科指导陆卫忠时间2005年12月23日苏州科技学院成教02计算机科学与技术总任务1.课题名称使用OpenGL技术,制作一个彩色旋转立方体。2.制作单位苏州科技学院成教02计算机科学与技术3.完成地点电子系学生机房4.完成时间2006年1月6日用户需求分析1.背景a.使用OpenGL制作彩色旋转立方体b.05年第一学期末实验周课程设计c.电子系学生机房完成该课程设计1.1参考资料VisualC++CAD应用程序开发技术《王清辉王彪编著》机械工业出版社VisualC++实践与提高图形图像编程篇《李于剑编著》中国铁道出版社2.任务概述2.1目标利用OpenGL的动画功能,实现运动彩色立方体的旋转。效果如图所示。2.2使用特点程序编译成功后生成EXE文件,可以观看到利用OpenGL的函数实现动画功能,使彩色立方体旋转。3需求规定3.1对技术的需求OpenGL技术:OpenGL(OpenGraphicsLibrary)是一个优秀的三维图形硬件接口,实际上是一个维图形和模型库。使用OpenGL可以绘制出真实感很强的三维图形,且由于越来越多的高档加速卡支持OpenGL,所以使用OpenGL绘图可以获得很快的执行速度。OpenGL是一个与硬件无关的图形编程接口,可以在不同的硬件平台上实现。OpenGL最初目的是将用户从具体的硬件环境的操作系统中解放出来,而可以完全不到理解这些系统的结构和指令系统。OpenGL本身不提供高级的造型命令,而是通过基本的几何图元---点,线和多边形来建立几何模型。用户则是通过这些基本图元来建立高级的几何模型。OpenGL可以提供的功能主要包括:(1)图形绘制。(2)充换操作(3)颜色模式(4)光照(5)图像效果增强(6)位图和图像(7)纹理映射(8)交互与动画4运行环境规定4.1设备硬件:CPUP3533内存128M显示卡:支持OpenGL硬盘空间:20G软件:Win98/Winme/WinNT/Win2000/WinXP/Win2003VisualC++编程工具详细设计说明书1引言1.1编写目的本系统可以提供一个彩色旋转立方体,使用户直接就可以看到一个使用OpenGL技术而旋转的彩色立方体。1.2背景a.使用OpenGL制作彩色旋转立方体b.05年第一学期末实验周课程设计c.电子系学生机房完成该课程设计1.3定义OpenGL(OpenGraphicsLibrary)是一个三维图形硬件接口,实际上是一个三维图形和模型库。1.4参考资料VisualC++CAD应用程序开发技术《王清辉王彪编著》机械工业出版社VisualC++实践与提高图形图像编程篇《李于剑编著》中国铁道出版社2总体设计2.1需求规定为用户提供一个可以旋转的彩色立方体。2.2运行环境硬件:CPUP3533内存128M显示卡:支持OpenGL硬盘空间:20G软件:Win98/Winme/WinNT/Win2000/WinXP/Win2003VisualC++编程工具2.3设计概念OpenGL支持双缓存技术。使用双缓存可以实现平滑的图形动画效果。在双缓存模式下,帧存被分为两个视频缓存:前台视频和后台视频。当绘制函数调用结束,并完成了后台视频缓的内容时,OpenGL便将它拷贝到前台视频缓存。由于这个视频交换的时间极短,肉眼感觉不出来,因此可以实现平滑的图形动画效果。2.4结构CGLView的结构CGLView的消息处理2.5尚未问决的问题在本系统中,该立方体的绕XYZ轴旋转的时间还没有具体的程序来确定。3接口设计3.1用户接口向用户提供一个.exe文件,用户直接运行该文件就可以得到一个彩色旋转立方体。4运行设计4.1运行控制CViewCGLView………m_pDCCOpenGLDCObject…………m_CameraGcameraobjectOnCreate()CreateCOpenGLDCOnDraw()M_pGLDC-Ready()RenderScene()M_pGLDC-Finish()OnDestroy()Deletem_pGLDCCGLViewWindowsMessageLoopOnSize()M_pGLDC-GLResize()直接运行4.2运行时间由于程序占用资源很少,运行时间快,点击后即可看见图形效果。5系统出错处理设计由于该系统简单可靠,出错后关闭再重新运行就可以再次得到该立方体。主要源代码DialogGLDlg.hclassCDialogGLDlg:publicCDialog{//Constructionpublic:voidOnabout();voidBuildList();CDialogGLDlg(CWnd*pParent=NULL);//standardconstructorBOOLSetWindowPixelFormat(HDChDC);BOOLCreateViewGLContext(HDChDC);voidRenderScene();voidRotate();BOOLm_Rotate;HGLRCm_hGLContext;intm_GLPixelIndex;doublem_transY;doublem_transX;doublem_angle1;doublem_angle2;floatm_ScaleX;floatm_ScaleY;floatm_ScaleZ;GLdoublem_xRotate;GLdoublem_yRotate;intm_width;intm_height;intm_exp;floatm_size;CPointm_RightDownPos;CPointm_LeftDownPos;BOOLm_RightButtonDown;BOOLm_LeftButtonDown;//DialogData//{{AFX_DATA(CDialogGLDlg)enum{IDD=IDD_DIALOGGL_DIALOG};//NOTE:theClassWizardwilladddatamembershere//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CDialogGLDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:afx_msgvoidOnContextMenu(CWnd*,CPointpoint);HICONm_hIcon;//Generatedmessagemapfunctions//{{AFX_MSG(CDialogGLDlg)virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);afx_msgvoidOnDestroy();afx_msgvoidOnSize(UINTnType,intcx,intcy);afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);afx_msgvoidOnLButtonUp(UINTnFlags,CPointpoint);afx_msgvoidOnMouseMove(UINTnFlags,CPointpoint);afx_msgvoidOnTimer(UINTnIDEvent);afx_msgvoidOnPopupRotate();afx_msgvoidOnPopupSizeDecrease();afx_msgvoidOnPopupSizeIncrease();afx_msgvoidOnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags);//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCATION}}//MicrosoftDeveloperStudiowillinsertadditionaldeclarationsimmediatelybeforethepreviousline.DialogGLDlg.cppBOOLCDialogGLDlg::SetWindowPixelFormat(HDChDC){PIXELFORMATDESCRIPTORpixelDesc;//结构体,用于构造画图面pixelDesc.nSize=sizeof(PIXELFORMATDESCRIPTOR);//大小pixelDesc.nVersion=1;//Specifiestheversionofthisdatastructure.Thisvalueshouldbesetto1.pixelDesc.dwFlags=PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_STEREO_DONTCARE;pixelDesc.iPixelType=PFD_TYPE_RGBA;pixelDesc.cColorBits=32;pixelDesc.cRedBits=8;pixelDesc.cRedShift=16;pixelDesc.cGreenBits=8;pixelDesc.cGreenShift=8;pixelDesc.cBlueBits=8;pixelDesc.cBlueShift=0;pixelDesc.cAlphaBits=0;pixelDesc.cAlphaShift=0;pixelDesc.cAccumBits=64;pixelDesc.cAccumRedBits=16;pixelDesc.cAccumGreenBits=16;pixelDesc.cAccumBlueBits=16;pixelDesc.cAccumAlphaBits=0;pixelDesc.cDepthBits=32;pixelDesc.cStencilBits=8;pixelDesc.cAuxBuffers=0;pixelDesc.iLayerType=PFD_MAIN_PLANE;pixelDesc.bReserved=0;pixelDesc.dwLayerMask=0;pixelDesc.dwVisibleMask=0;pixelDesc.dwDamageMask=0;m_GLPixelIndex=ChoosePixelFormat(hDC,&pixelDesc);if(m_GLPixelIndex==0)//Choosedefault{m_GLPixelIndex=1;if(DescribePixelFormat(hDC,m_GLPixelIndex,sizeof(PIXELFORMATDESCRIPTOR),&pixelDesc)==0){returnFALSE;}}if(SetPixelFormat(hDC,m_GLPixelIndex,&pixelDesc)==FALSE){returnFALSE;}returnTRUE;}BOOLCDialogGLDlg::CreateViewGLContext(HDChDC){m_hGLContext=wglCreateContext(hDC);if(m_hGLContext==NULL)returnFALSE;if(wglMakeCurrent(hDC,m_hGLContext)==FALSE)returnFALSE;returnTRUE;}//窗体颜色intCDialogGLDlg::OnCreate(LPCREATESTRUCTlpCre
本文标题:openGL设计报告
链接地址:https://www.777doc.com/doc-5700641 .html