- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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:
/** 构造函数 */
您可能关注的文档
- 条件接收系统及同密处理技术精要.doc
- 条件异方差模型-9精要.pptx
- 2016款解放J6P奥威牵引介绍及报价要点.ppt
- 条件概率-全概率公式精要.pptx
- 条件概率1精要.pptx
- 2016枫车5S管理标准要点.pptx
- 条码试题单选题精要.doc
- 2016江苏公务员行测真题A类要点.doc
- 2016江苏徐州市高考前模拟语文试题及答案要点.doc
- 2016汕头市澄海区中考模拟考化学卷要点.doc
- 2021-2022学年湖南省常德市安乡县四年级上学期期中语文真题及答案.pdf
- 2023-2024学年河南省南阳市社旗县四年级上学期期中数学真题及答案.pdf
- 2022-2023学年云南省曲靖市四年级下学期期末数学真题及答案.pdf
- 2021-2022学年河南省周口市鹿邑县二年级下册月考语文真题及答案.pdf
- 2018年河南焦作解放区教师招聘考试真题及答案.pdf
- 2019年江西公务员行测考试真题及答案-乡镇.pdf
- 2019中国石油报社应届高校毕业生招聘试题及答案解析.pdf
- 光大银行招聘应届毕业生能力素质测试笔试真题及答案.pdf
- 2024年广西百色教师招聘考试模拟题及答案.pdf
- 2021-2022学年浙江绍兴诸暨市五年级上册语文期末试卷及答案.pdf
文档评论(0)