实验一 opengl高级图形图像实验报告.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 opengl高级图形图像实验报告.doc

高级图形图像第一次实验报告 实验描述以及关键步骤 opengl编程环境组建(基于VC6.0) 下载opengl开发库文件夹; 复制glut32.dll和glut.dll到…\windows\system32; 复制glut.h到...\Microsoft Visual Studio\VC98\Include\GL; 复制glut32.lib和glut.lib到…\Microsoft Visual Studio\VC98\Lib; 新建工程后,进入Project菜单,选Settings项,弹出 Settings 对话框,选Link项,在 Libraries 栏目中加入OpenGL库:opengl32.lib glu32.lib glaux.lib。 基本图形绘制 首先运行一个Windows环境下的一个基本OpenGL程序,直接打开60version文件夹内的工程,它将显示一个空的OpenGL窗口,可以在定制窗口大小和全屏模式下切换(按F1),按ESC退出,该程序为以后的应用程序提供了实验平台,并预留了绘图接口。 根据教材P67-70,了解绘制函数,根据附件2提供的源码baseshape.cpp,将该文件内的场景绘制函数Drawsence()替代空窗口程序中的同名函数,修改图形绘制命令和参数,显示出点、线、矩形、三角形等,可设置不同线宽。 图形的二维变换 根据附件3提供源码,将该文件内的场景绘制函数Drawsence()替代空窗口程序中的同名函数,通过调用glTranslate*, glRotate*,glscale*等二维变换函数实现平移、旋转、缩放等变换,通过参数操作和矩阵操作两种方式执行。 glTranslatef:在opengl中,函数glTranslatef的作用就是移动坐标原点。 glRotatef:glRotatef( angle, x, y, z )函数的作用是将当前坐标系以a( x, y, z )向量为旋转轴旋转angle角度。glScalef:模型缩放函数。 二维观察流水线 根据附件viewport.cpp提供的源代码和课本P253-259,将该文件内的场景绘制函数Drawsence()替代空窗口程序中的同名函数,参考glut窗口操作函数,实现同一窗口中的视口变换和多视口显示。 分形 在完成前面工作的基础上,引入分形的递归算法,通过绘制小的三角形动作,生成Sierpinski镂垫。 二、 实验步骤解析 首先用vc6.0新建一个支持MFC的工程,把附件所给的空窗口的源代码拷贝到工程里,运行,显示一个空窗。如图1。 将附件2提供的源码代替上一步骤中的Drawsence()函数,运行窗口中显示出一个三角形和一个正方形,如图2。 修改上述程序,实现画两个点,线段,矩形,如图3。 改变上一个步骤中的线宽,画出不同宽度的线段。如图4。 将附件3提供的源代码代替上一步骤中的Drawsence()函数,运行窗口中显示缩放,平移,旋转的三角形和正方形。如图5。 修改上述程序,用矩阵方法实现平移,缩放和旋转。如图6。 修改上述程序,用参数方法实现平移、旋转和缩放,并添加颜色。如图7,图8。 将附件viewport.cpp代替上述程序中的Drawsence()函数,实现同一窗口中的视口变换和多视口显示。如图9。 修改上述程序,实现同一窗口中的视口变换和多视口显示。如图10。 在完成前面工作的基础上,引入分形的递归算法,通过绘制小的三角形动作,生成Sierpinski镂垫。如图11。 编程思路及实现 空窗程序 这个程序运行后给出一个黑色背景的空窗,在DrawGLScene函数中,不写任何图形绘制的代码,仅仅进行初始设置。设置F1键的功能为跳出全屏窗口。 int DrawGLScene(GLvoid) // 从这里开始进行所有的绘制 { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存 glLoadIdentity(); // 重置当前的模型观察矩阵 return TRUE; // 一切 OK } 画三角形和正方形 画三角形调用glBegin(GL_TRIANGLES)函数,函数中只要指定三个点即可。接着在三角形右侧3个单位距离处画正方形,用glBegin(GL_QUADS),需要四个点。 int DrawGLScene(GLvoid) // { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕及深度缓存 glLoadIdentity();

文档评论(0)

xinshengwencai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档