资源描述:
《计算机图形学实验指导》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验课程任务与要求目的与任务:计算机图形学实验教学是为了将学生的计算机操作能力、分析能力、工程设计能力与应用实践结合起来,引导学生由浅入深地掌握计算机图形学理论与算法,掌握交互构图能力,具备工程应用的图形学基础。实验基本要求:(以软件设计为主要表现形式)(1)上机前应准备好实验的程序设计算法描述与关键分析内容。(2)准备好程序测试数据和设备操作步骤,上机调试、运行。(3)完成每个实验后进行数据与程序对比分析。(4)写出实验报告(含实验题目,不同顺序或本次算法的比较与效果分析,给出运行结果。若实验未能通过,给出原因与今后改进措施)。实验报告式样:《计算机图形学》实验报告实验
2、题目姓名系别班级学号设计日期指导教师设计成绩一.设计目的及要求二.理论基础三.算法设计与分析四.程序调试及运行结果的自我分析与自我评价五.设计心得及建议实验一VC++6.0+OpenGL绘图环境及简单图形的输出学时安排:(2学时)要求:(1)掌握VC++6.0+OpenGL绘图环境的设置;(2)利用OpenGL绘制简单图形并在设备上输出;(3)用glut编C++程程序的方法。实验指导:MFC编程1.开发环境的配置(1)将“glut32.dll”文件拷贝到操作系统对应的目录中。(2)将“glut32.h”文件拷贝到VC++6.0的Include文件夹中。(3)将“glut3
3、2.lib”文件拷贝到VC++6.0的lib文件夹中。2.启动VC6.0,新建一个单文档应用程序,如名称MySDOpenGL。3.利用MFCClassWizard为CMySDOpenGLView类添加消息WM_CREATE,WM_DESTROY,WM_SIZE,WM_TIMER的响应函数。4.如下所示在MySDOpenGLView.h中加入源代码。public://添加成员函数与成员变量BOOLRenderScene();BOOLSetupPixelFormat(void);voidSetLogicalPalette(void);BOOLInitializeOpenGL(
4、CDC*pDC);HGLRCm_hRC;//OpenGL绘制描述表HPALETTEm_hPalette;//OpenGL调色板CDC*m_pDC;//OpenGL设备描述表5.如下所示在MySDOpenGLView.cpp中加入源代码。BOOLCMySDOpenGLView::PreCreateWindow(CREATESTRUCT&cs){。。。。。。cs.style
5、=WS_CLIPCHILDREN
6、WS_CLIPSIBLINGS;//设置窗口类型。。。。。。}voidCMySDOpenGLView::OnDraw(CDC*pDC){。。。。。。RenderScene
7、();//渲染场景。。。。。。}intCMySDOpenGLView::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;//初始化OpenGL和设置定时器m_pDC=newCClientDC(this);SetTimer(1,20,NULL);InitializeOpenGL(m_pDC);return0;}voidCMySDOpenGLView::OnDestroy(){CView::OnDestroy();//删除调色板和渲染上下文、定时器::
8、wglMakeCurrent(0,0);::wglDeleteContext(m_hRC);if(m_hPalette)DeleteObject(m_hPalette);if(m_pDC){deletem_pDC;}KillTimer(1);}voidCMySDOpenGLView::OnSize(UINTnType,intcx,intcy){CView::OnSize(nType,cx,cy);//添加窗口缩放时的图形变换函数glViewport(0,0,cx,cy);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPer
9、spective(60.0,(GLfloat)cx/(GLfloat)cy,1.0,20.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);}voidCMySDOpenGLView::OnTimer(UINTnIDEvent){//添加定时器响应函数和场景更新函数Invalidate(FALSE);//year=(year+5)%360;day=(day+10)%360;CView::OnT