计算机图形学用OpenGL画出矩形三角形和点.docx

计算机图形学用OpenGL画出矩形三角形和点.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学实验报告 实验 1 OpenGL 初识 实验目的 熟悉编程环境;了解光栅图形显示器的特点;了解计算机绘制图形的特点;利用 VC+OpenGL 作为开发平台设计程序,以能够在屏幕上生成任意一个像素点作为本实验的目标 实验内容 了解和使用 vc 的开发环境,理解简单的 OpenGL 程序结构 掌握 OpenGL 提供的基本图形函数,尤其是生成点的函数 实验原理 基本语法 OpenGL 基本函数均使用 gl 作为函数名的前缀;为了便于移植,OpenGL 定义了一些自己的数据类型 程序的基本结构 OpenGL 程序的基本结构可以分为三个部分,第一部分是初始化部分,主要是设置一些 OpenGL 的状态开关,如颜色模式的选择,是否作光照处理,深度检测,裁剪等; 第二部分设置观察坐标系下的取景模式和取景框位置大小; 第三部分是OpenGL 的主要部分,使用OpenGL 的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系、几何变换和光照处理等。 状态机制 OpenGL 的工作方式是一种状态机制,它可以进行各种状态或模式设置,这些状态或模式在重新改变它们之前一直有效。例如 ,当前颜色就是一个状态变量, 在这个状态改变之前, 绘制的每个像素都将使用该颜色 , 直到当前颜色被设置为其他颜色为止。OpenGL 中大量使用了这种状态机制,如颜色模式、投影模式、单双显不 1 缓存区的设置、背景色的设置、光源的位置和特性等。许多状态变量可以通过 glEnable0、 glDisable0 这两个函数来设置成有效或无效状态, 如是否设置光照、 是否进行深度检测等; 在被设置成有效状态之后 , 绝大部分状态变量都有一个默认值。通常情况下,可以用下列四个函数来获取某个状态变量的值: glGetBooleanv 、 glGetDouble. 、. glGetF1oatv 和glGetIntegerv。究竟选择哪个函数应该根据所要获得的返回值的数据类型来决定。 还有些状态变量有特殊的査询函数 , 如 glGetLight*、 glGetError 和glPolygonStipple 等。另外,使用 glPushAttrib 和 glPopAttrib 函数,可以存储和恢复最近的状态变量的值。只要有可能,都应该使用这些函数,因为它们比其他査询函数的效率更局。 实验代码#include<Gl/glut.h> void myDisplay(void) { glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,1.0f,1.0f); glRectf(-0.5f,-0.5f,0.5f,0.5f); glBegin(GL_TRIANGLES); glColor3f(1.0f,0.0f,0.0f); glVertex2f(0.0f,1.0f); glColor3f(0.0f,1.0f,0.0f); glVertex2f(0.8f-,0.5f); glColor3f(0.0f,0.0f,1.0f); glVertex2f(-0.8f,-0.5f); glEnd(); glPointSize(3); glBegin(GL_POINTS); glColor3f(1.0f,0.0f,0.0f); glVertex2f(-0.4f,-0.4f); glColor3f(0.0f,1.0f,0.0f); glVertex2f(0.0f,0.0f); glColor3f(0.0f,0.0f,1.0f); glVertex2f(0.4f,0.4f); glEnd(); } int main(int argc, char *argv[]) { glFlush(); glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); glutInitWindowPosition(100,100); glutInitWindowSize(400,400); glutCreateWindow("Hello world!"); glutDisplayFunc(&myDisplay); }glutMainLoop(); return 0; } 实验提高#include<Gl/glut.h> void myDisplay(void) {  glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,1.0f,1.0f); glRectf(-0.5f,-0.5f,0.5f,0.5f); glBegin(GL_TRIANGLES); glC

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

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

认证主体上海海滋实业有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档