- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学OpenGL(第三版)第二章资料
本章内容 编写图形程序 学习OpenGL程序的基本组成 开发绘制点、直线、折线和多边形的基本图形工具 学会用鼠标和键盘控制程序 2.0 vc opengl 编程 指导例子 熟悉代码,多次练习 见图形学第二课opengl-console.doc,创建一个控制台的应用程序,本书采用的编程方式 见图形学第二课opengl-nehe-win.doc,创建一个win32的应用程序,nehe教程(共48课)采用的编程方式 见图形学第三课opengl-nehe-mfc.doc,创建一个mfc的应用程序,本人推荐采用的编程方式,需要学习vc和mfc。 2.1 生成图像初步 通过练习(编写和测试各种不同图形的程序)可以很快掌握计算机图形学。先从简单的任务开始,一旦掌握,就试着变变花样,看看有哪些变化,试着进一步绘制更复杂的场景。最好的学习办法是认真、仔细地学习每行代码或等式。当你这么做时,就能理解每个新概念。 每个图形程序都以一些初始化工作为开始,由此建立程序所需要的显示模型和坐标系。 2.1 生成图像初步 初始化时,将显示器设置为“图形模式”,并且建立了坐标系,坐标x和y以像素为单位,x向右递增,y向下递增。 2.1.1 设备无关的编程 和OpenGL OpenGL程序可以在不同的图形环境里编译和运行,即它是与设备无关的编程。OpenGL是一个开源图形库,可在下载。OpenGL常被称为应用程序接口(API)。这个接口是程序员可以调用的例程,先从OpenGL绘制简单的二维物体开始,然后学习绘制三维图形。 2.1.2 窗口的编程 事件驱动编程:事件包括单击鼠标,按下键盘上的按键,或者重新调整窗口的大小。程序员将程序组织成回调函数的集合,这些回调函数一有事件发生就执行。即什么也不做,等待事件发生,事件发生后再做指定的事。OpenGL有一个GLUT库,它用来打开窗口,管理菜单和处理事件等。 注册回调函数:有一种方法将每种类型的事件与要求的回调函数关联起来,这个方法称之为注册回调函数。程序中用到的每一个事件类型都必须用回调函数注册,该回调函数的名字和定义由程序员选择。 2.1.2 窗口的编程 下面是使用GLUT库,名为myMouse的回调函数例子,它方便地注册了与鼠标关联的事件: glutMouseFunc(myMouse); glutMouseFunc是GLUT库的固有函数,但是回调函数myMouse是程序员定义的,并由程序员编写代码,处理每个可能感兴趣的鼠标动作。 4种主要的OpenGL库: 1)基本GL库,OpenGL库的基础。它提供OpenGL的基本函数。每个OpenGL函数都以字符GL开头。 2.1.2 窗口的编程 2)GLUT库:GL实用工具包。它用来打开窗口,开发和管理菜单,以及管理事件等。 3)GLU库:GL实用库,它提供高级例程,处理矩阵操作和绘制二次曲面如球和圆柱体; 4)GLUI库:用户接口库,提供控制工具和菜单。 glutDisplayFunc(myDisplay):重绘窗口调用myDisplay回调函数; glutReshapeFun(myReshape):对屏幕窗口的形状进行调整; void main() { glutDisplayFunc(myDisplay); // 注册重绘函数 glutReshapeFunc(myReshape); // 注册改变窗口形状函数 glutMouseFunc(myMouse); // 注册鼠标动作函数 glutMotionFunc(myMouse); // 注册鼠标移动函数 glutKeyboardFunc(myKeyboard); // 注册键盘动作函数 //可能初始化其他工作 glutMainLoop(); // 进入主循环等待事件发生 } 2.1.3 如何打开一个窗口画图 glutInit:该函数初始化工具包 glutDisplayMode(GLUT_SINGLE | GLUT_RGB): 分配单个显示缓存 glutInitWindowSize(640,480): 该函数指定屏幕的初始尺寸,宽640像素,高480像素。 glutCreateWindow(“my first attempt”):该函数打开并显示屏幕窗口吗,并显示标题。 代码如下: void main(int argc, char** argv) { glutInit(argc, argv); // 初始化工具包 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式 glutInitWindowSize(640,480); // 设置窗
文档评论(0)