- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL的基本程序结构
常用的程序设计语言,如C、C++、Pascal Fortran和Java等,都支持OpenGL的 开发。这里只讨论C版本下OpenGL的语法。
程序的基本结构
OpenGL程序的基本结构可分为三个部分:
第一部分是初始化部分。主要是设置一些OpenGL的状态开关,如颜色模式
(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度 检验,裁剪等等。这些状态一般都用函数glEnable(???), glDisable (???)来设 置,???表示特定的状态。
第二部分设置观察坐标系下的取景模式和取景框位置大小。主要利用了三个函 数:
函数 void glViewport (left, top, right, bottom):设置在屏幕上的窗口大小, 四个参数描述屏幕窗口四个角上的坐标(以象素表示);
函数 void glOrtho(left, right, bottom, top, near, far):设置投影方式为正交 投影(平行投影),其取景体积是一个各面均为矩形的六面体;
函数 void gluPerspective(fovy, aspect, zNear, zFar):设置投影方式为透视投
影,其取景体积是一个截头锥体。
第三部分是OpenGL的主要部分,使用OpenGL的库函数构造几何物体对象的数 学描述,包括点线面的位置和拓扑关系、几何变换、光照处理等等。
以上三个部分是OpenGL程序的基本框架,即使移植到使用MFC的Windows程序 中,也是如此。只是由于Windows自身有一套显示方式,需耍进行一些必要的改动 以协调这两种不同显示方式。
OpenGL基本函数均使用gl作为函数名的前缀,glClearColor ();实用函数 则使用glu作为函数名的前缀,如gluSphereO。OpenGL基本常量的名字以GL_ 开头,如GL_LINE_LOOP;实用常量的名字以GLUJT头,如GLU_FILL。一些函数如 glColor* ()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型 和格式。如 glColor3b (???)、glColor3d (...) glColor3f (...)和 glColor3bv(...)等,这儿个函数在功能上是相似的,只是适用于不同的数据类型 和格式,其屮3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节 型、双精度浮点型和单精度浮点型,v则表示这些参数是以向量形式岀现的。
OpenGL定义了一些特殊标识符,如GLfloat, GLvoido它们其实就是C中的 float和void。在gl. h文件中可以看到以下定义:
typedef float GLfloat;
typedef void GLvoid;
一些棊本的数据类型都有类似的定义项。
状态机制
OpenGL的工作方式是一种状态机制,它可以进行各种状态或模式设置,这些状 态或模式在重新改变它们之前一直有效。例如,当前颜色就是一个状态变量,在 这个状态改变之前,绘制的每个象素都将使用该颜色,直到当前颜色被设置为其它 颜色为止。OpenGL中大量地使用了这种状态机制,如颜色模式、投影模式、单双 显示缓存区的设置、背景色的设置、光源的位置和特性等等。许多状态变量可以通 过glEnableO、glDisableO这两个函数来设置成有效 或无效状态,如是否设置 光照、是否进行深度检测等;在被设置成有效状态之后,绝大部分状态变量都有一 个缺省值。通常情况下,可以用下列四个函数来获取某个状态变量的值: glGetBooleanv ()、glGetDouble ()、 glGetFloatv ()和 glGetlntegerv ()。究竞选 择哪个函数应该根据所要获得的返回值的数据类型来决定。还有些状态变量有特 殊的查询函数,如 glGetLight*()、glGetError ()和 glPolygonStipple()等。另 外,使用glPushAttrib()和glPopAttrib()函数,可以存储和恢复最近的状态变量 的值。只要有町能,都应该使用这些函数,因为它们比其它查询函数的效率更高。
XKUJWhMHbb Klht KlLiMWiAhOLKLHUITEST (JLCUP PUNK OCbEPth TEST OLLKHOi ■■
X
KUJWhMHbb Klht KlLiMWiAh
OLKLHUITEST (JLCUP PUNK OCbEPth TEST OLLKHOi
■■上一
OLLKHmm OCLUHnNO OCtlHESMOOIH oCtNKlrnpfu
MB MB
OLMUHLia OCtaLTOON SKXHH
部分利用glE
您可能关注的文档
最近下载
- 奶茶店兼职劳务合同模板(3篇).docx
- OTIS奥的斯XIOTIS西子奥的斯标准ACD4MR电气原理图XAA21310AT注解版.pdf
- 健康体重课件小学生版最新完整版本.pptx VIP
- 内分泌性高血压筛查专家共识(2025版).pdf VIP
- 高级教师职称面试讲课答辩题目及答案(分五类共60题).docx VIP
- 全国智能制造应用技术技能大赛理论知识题库资料(核心500题).pdf VIP
- 安全生产台账建立与完善策略.docx VIP
- 矿山井巷施工施工组织设计 (1).pdf VIP
- CRM坐席操作手册.pdf VIP
- 2025年新高考物理压轴题专项训练09 电磁感应中的单双棒问题 含解析 .docx VIP
文档评论(0)