- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 计算机图形系统 2.1 计算机图形系统概述 2.2 基于Windows的图形程序开发方法 2.3 OpenGL介绍 2.1 计算机图形系统概述 2.1.1 计算机图形外部设备 新型显示器 计算机图形输入设备 计算机图形输出设备 2.1.2 计算机图形软件 几何造型平台 CAD/CAM 计算机动画软件 可视化软件 2.1.3 图形标准 图形标准的产生与发展历史 2.2 基于Windows的图形程序设计方法 2.2.1 Windows应用程序执行模式 2.2.2 Visual C++程序设计框架 2.2.3 Windows图形环境介绍 设备上下文DC(Device Context) 绘图句柄(HDC) 映射模式 2.2.4 Windows图形程序开发 2.3 OpenGL介绍 2.3.2 OpenGL的主要功能 2.3.3 OpenGL的绘制流程和原理 2.3.4 VC++开发OpenGL绘图程序 2.3.5 OpenGL的缓冲区 在Visual C++中,修改视图类成员函数代码实现OpenGL绘图的过程如下: ①改造PreCreateWindow函数:将窗口的客户区设置为OpenGL能够支持的风格。具体添加代码如下: cs.style=WS_CLIPCHILDREN|WS_CLIPSIBLINGS; ②改造OnCreate函数:定义像素存储格式,并创建一个OpenGL操作所必须的绘图上下文RC(Rendering Context)。使用一个PIXELFORMATDESCRIPTOR结构来指定像素格式,使用wglCreateContext()函数创建绘图上下文RC。 具体添加代码如下: //首先定义像素存储格式 PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESCRIPTOR), // pfd的大小 1, //结构的版本号 PFD_DRAW_TO_WINDOW| //支持window PFD_SUPPORT_OPENGL| //支持OpenGL PFD_DOUBLEBUFFER, //双缓存 PFD_TYPE_RGBA, //RGBA颜色模式 24, //24位颜色深度缓存 0,0,0,0,0,0, //color bits ignored 0, //no alpha buffer 0, //shift bit ignored 0, //不使用累积缓存 0,0,0,0, //accum bits ignored 32, //32位z缓冲 0, //不使用模板缓存 0, //no auxiliary buffer PFD_MAIN_PLANE, //选择主层面 0, //保留 0,0,0 //layer masks ignored }; CCLient dc(this); int pixelFormat=ChoosePixelFormat(dc.m_hDC,pfd); BOOL success=SetPixelFormat(dc.m_hDC,pixelFormat,pfd); //创建绘图上下文RC m_hRC=wglCreateContext(dc.m_hDC); ③改造OnSize函数:当视图尺寸变化是,应及时将新的客户区尺寸通知OpenGL,方能够正确在窗口客户区域显示二维场景,通过命令glViewPort完成这项工作。 ④改造OnEraseBkgnd函数:重载视图类的OnEraseBkgnd成员,使之返回TRUE值可以阻止Windows重画窗口背景,因为OpenGL自己会设置窗口背景,这样可以防止窗口频繁刷新(如移动窗口)时产生的闪烁现象。 ⑤改造OnDestroy函数:在OnDestroy成员中需要释放OnCreate成员中RC所占用的资源,命令wglDeleteContext可以完成这个工作,但在释放RC之前,还需要使用命令wglMakeCurrent()断开RC与设备描述表DC的连接。具体代码如下: wglMakeCurrent(NULL,NULL); wglDeleteContext(m_hRC); ⑥改造OnDraw:根据当前的视点、视距、观看方向等参数,设置合适的OpenGL视景体属性,使用户能够看到预期的场景外观。添加的代码如下: wglMakeCurrent(pDC-m_hDC,m_hRC); DrawScene(); //用户自定义函数,用来编写OpenGL绘制语句的 wglMakeCurrent(pDC-m_hDC,NULL); 在DrawScene( )函数中
您可能关注的文档
最近下载
- 40万吨年MDI项目(和山巨力化工)环境影响报告.pdf
- 黑龙江省“六校联盟”2025届高三上学期联合适应性考试数学试题(含答案).pdf VIP
- 福建省高中名校2025学年高三年级第一学期期末数学试卷(附答案)2025.pdf VIP
- 2025高考语文60篇古诗文原文+翻译+赏析+情景默写.pdf VIP
- 掺合料试题带答案.docx VIP
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库及答案解析.docx VIP
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库及答案解析.docx VIP
- 安徽A10联盟2025届高三上学期12月质检考 数学试卷(含答案解析).pdf
- 家庭音乐室另辟蹊径.pdf VIP
- 外加剂掺合料试题带答案.docx VIP
文档评论(0)