杭州电子科技大学《实时三维图形绘制》OpenGL大作业实验报告精要.docx

杭州电子科技大学《实时三维图形绘制》OpenGL大作业实验报告精要.docx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
杭州电子科技大学《实时三维图形绘制》OpenGL大作业实验报告精要

实时三维图形绘制 实验报告 基于粒子系统的雪花场景模拟 实验目的 通过一学期对《实时三维图形绘制》的学习,在熟练掌握OpenGL理论的前提下,动手实践,将课本知识转化为实际应用。 实验要求 编程实现绘制OpenGL场景并可交互式操作,体现课堂所学内容。 实验内容 1、搭建OpenGL程序框架 首先在VS2015中新建项目,在该项目中建立3个主要的类:GLWindow、Keys和GLApplication,其中GLWindow类负责窗口属性的设置,包括建立、更新、删除窗口等操作。Keys类负责读取键盘的输入,这样才能实现交互的要求。GLApplication类负责建立我们的应用程序,包括初始化、更新、绘制图形等操作。 窗口类GLWindow的设计 在新建项目中添加类GLWindow,它包括程序主窗口的属性,以及建立、改变和删除窗口的方法(具体程序见代码)。 /** windows窗口类 */ class GLWindow { public: /** 构造函数 */ GLWindow(); /** 创建windows窗口 */ bool Create(const char * window_title, const char * class_name, bool fullscreen,HINSTANCE h_instance, LPVOID lpParam); /** 删除OpenGL窗口 */ void Destroy(); /** 改变窗口的显示设置 */ bool ChangeScreenSetting(); /** 当窗口大小改变时,通知OpenGL调整大小 */ void ReshapeGL(); /** Swap Buffers (Double Buffering) */ void SwapBuffers() { ::SwapBuffers(m_hDC); } /** 设置窗口左上角的位置 */ void SetPosX(int x); void SetPosX(unsigned short x) { SetPosX((signed short)x); } void SetPosY(int y); void SetPosY(unsigned short y) { SetPosY((signed short)y); } /** 返回窗口的大小 */ int GetWidth(); int GetHeight(); /** 设置窗口的大小 */ void SetWidth(int width); void SetHeight(int height); /** 返回窗口左上角的位置 */ int GetPosX(); int GetPosY(); /** 设置窗口的颜色位深 */ void SetHiColor() { m_BitsPerPixel = 16; } void SetTrueColor() { m_BitsPerPixel = 32; } /** 重载运算符,可以让GL_Window m_Window声明后的m_Window作为窗口句柄使用 */ operator HWND() { return m_hWnd; } private: HWND m_hWnd; /** 窗口句柄 */ HDC m_hDC; /** 设备描述表 */ HGLRC m_hRC; /** OpenGL渲染描述表 */ int m_WindowPosX; /** 窗口的左上角的X位置 */ int m_WindowPosY; /** 窗口的左上角的Y位置 */ int m_WindowWidth; /** 窗口的宽度 */ int m_WindowHeight; /** 窗口的高度 */ int m_ScreenWidth; /** 全屏的宽度 */ int m_ScreenHeight; /** 全屏的高度 */ int m_BitsPerPixel; /** 颜色位深 */ bool m_IsFullScreen; /** 是否全屏 */ }; 键盘类Keys的设计 定义键盘类Keys对我们的按键信息进行记录,用于程序达到交互的目的。 /** 定义键盘类 */ class Keys { public: /** 构造函数 */

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档