- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
完整的程序
Angel: Interactive Computer Graphics 3E ? Addison-Wesley 2002 计算机图形学 杨 武 影像科学与技术实验室 东南大学计算机学院 yangwu@seu.edu.cn 第二章之第二节 完整的程序 主要内容 修改第一个程序 改变默认值 定义标准程序结构 简单视图 二维视图:三维视图的特殊情形 OpenGL 中的基本形状 属性 程序结构 绝大多数OpenGL程序具有类似的结构,包含下述函数 main(): 定义回调函数 打开一个或多个具有指定属性的窗口 进入事件循环(最后一条可执行语句) init(): 设置状态变量 视图 属性 回调函数 显示函数 输入和窗口函数 Simple.c 修改 在新程序中,会得到同样的输出,但是所有具有默认值的相应状态值都通过函数调用显式指定 特别地,设置了 颜色 视图条件 窗口属性 main.c #include GL/glut.h int main(int argc, char** argv) { glutInit(argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(500,500); glutInitWindowPosition(0,0); glutCreateWindow(simple); glutDisplayFunc(mydisplay); init(); glutMainLoop(); } GLUT 函数 glutInit 使得应用程序可以获取命令行参数并初始化系统 gluInitDisplayMode 设置窗口属性 RGB 颜色 单缓冲区 属性按逻辑或组合在一起 glutWindowSize 以像素为单位 glutWindowPosition 定义窗口左上角在显示器上的位置 glutCreateWindow 创建一个窗口,标题 “simple” glutDisplayFunc 定义显示回调函数 glutMainLoop 进入无穷事件循环 init.c void init() { glClearColor (0.0, 0.0, 0.0, 1.0); glColor3f(1.0, 1.0, 1.0); glMatrixMode (GL_PROJECTION); glLoadIdentity (); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); } 坐标系 在glVertex中的单位是由应用程序确定的,称为世界坐标系 视景体也是相对于世界坐标系指定的,视景体确定出现在图像中的对象 在OpenGL内部,会把世界坐标转化为照相机坐标,稍后转化为屏幕坐标 OpenGL 照相机 照相机放置在原点,指向z轴的负方向 默认的视景体是一个中心在原点,长为2的立方体 正交视图 变换与视图 在OpenGL中投影是利用投影矩阵乘法进行的 由于只存在一个变换函数系列,因此必须先设置矩阵模式 glMatrixMode (GL_PROJECTION) 变换函数是累加在一起的,因此需要从单位阵开始,然后把它改变为一个投影矩阵以定义视景体 glLoadIdentity (); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); 二维与三维视图 在glOrtho(左,右,底,顶,近,远)中的近与远是相对于照相机的距离而言的 二维顶点命令把所有的顶点放在z=0的平面上 如果应用程序处于二维状态,那么可以使用下述函数设置正交视景体: gluOrtho2D(left,right,bottom,top) 对于二维情形,视景体或裁剪体退化为裁剪窗口 mydisplay.c void mydisplay() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush(); } OpenGL 基本形状 多边形的条件 OpenGL 只能显示满足下述条件的多边形 简单: 边除顶点外不相交 凸: 对于多边形中任意两点,连接这两点的线段完全在多边形内 平面:
文档评论(0)