vc下利用opengl构造自由型曲线曲面-read.docVIP

vc下利用opengl构造自由型曲线曲面-read.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vc下利用opengl构造自由型曲线曲面-read

VC下利用OpenGL构造自由型曲线曲面 摘要:本文介绍了OpenGL在三维物体建模中的应用,并在VC++下通过该技术实现了对自由型曲线曲面的模型搭建。   关键词:OpenGL;自由型曲线曲面;NURBS;Visual C++   引言   随着计算机技术的飞速发展,计算机的性价比越来越高,为计算机图形学的发展奠定了坚实的基础。科学计算可视化、计算机动画和虚拟现实等技术在工程应用中得到了广泛的使用,这些技术的实现离不开对真实物体的三维建模。在实体建模时为减少运算量和存储空间多采用少量的控制点和各种光滑的样条和样条曲面如B样条、Nurbs曲面和贝塞尔(Bezier)曲面等来对其作精确的描述。自由型曲线曲面是一种非常重要的工业产品几何定义,在计算机辅助设计类软件中应用较为普遍。自1991年ISO(International Standardization Organization,国际标准化组织)颁布了STEP标准后由于在标准中明确规定了自由型曲线曲面在工程中唯一地用NURBS(Non_Uniform Rational B-Spline,非均匀有理B样条)表示而且在OpenGL(Open Graphics Library,开放式图形库)中对NURBS提供有建立在求值器基础之上的高层编程接口,因此在三维实体建模中多通过使用OpenGL求值器来完成对各种复杂自由型曲线曲面的构造。本文将在VC下对OpenGL提供的这个编程接口的使用进行介绍,并通过对该接口的编程实现对自由型曲线曲面的绘制。   OpenGL基本程序框架   OpenGL三维图形标准是由AT&T、IBM、DEC、SUN、HP、Microsoft和SGI等多家公司在GL图形库标准的基础上联合推出的开放式标准,它的出现彻底改变过去只能依赖于价格昂贵的图形工作站及复杂的三维图形软件从事三维图形计算机应用的历史,使广大程序员能够在PC机上用C语言开发出复杂的三维图形。由于OpenGL具有跨平台性、简便、高效、功能完善,目前已经成为三维图形制作中事实上的工业标准。它不仅提供了绘制点、线、多边形等基本形体的函数,还提供了绘制复杂三维曲线曲面和三维形体的函数。由于OpenGL在进行几何建模时是以顶点为图元,由点构成线,再由线及其拓扑结构组成多边形曲面,因此应用OpenGL提供的建模函数可构造出几乎所有的三维模型。   OpenGL的作用机制是客户(Client)服务器(Server)机制,客户(用OpenGL绘制图形的应用程序)向服务器(OpenGL内核)发送OpenGL指令,由服务器负责解释执行这些命令。OpenGL图形库被封装在动态连接库opengl32.dll内,在使用时从客户应用程序发出的对OpenGL接口函数的调用首先被opengl32.dll处理,然后传送给服务器并由Winsrv.dll做进一步处理后传给Win32 DDI(Device Drivers Interface,设备驱动接口),最后把处理过的图形命令送给视频显示驱动程序完成最终的显示。   由于OpenGL的辅助库函数对于自由型曲线曲面的绘制提供有NURBS编程接口,因此使用起来比较简单。使用OpenGL之前,必须通过初始化代码对其进行初始化并定义像素的存储格式等信息: PIXELFORMATDESCRIPTOR pixelDesc; pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);//pfd的大小 pixelDesc.nVersion = 1; //版本号 pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | //支持窗口 PFD_SUPPORT_OPENGL| //支持OpenGL PFD_DOUBLEBUFFER; //支持双缓存 pixelDesc.iPixelType = PFD_TYPE_RGBA; //RGBA类型 pixelDesc.cColorBits = 32; //32位色深度 pixelDesc.cRedBits = 8; //各颜色位 pixelDesc.cRedShift = 16; pixelDesc.cGreenBits = 8; pixelDesc.cGreenShift = 8; pixelDesc.cBlueBits = 8; pixelDesc.cBlueShift = 0; pixelDesc.cAlphaBits = 0; //无alpha缓存 pixelDesc.cAlphaShift = 0; //忽略转换位 pixelDesc.cAccumBits = 64; //各累计位 pixelDesc.cAccumRedBits = 16; pixelDesc.cAccumGre

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档