- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实时三维图形绘制
实验报告
基于粒子系统的雪花场景模拟
实验目的
通过一学期对《实时三维图形绘制》的学习,在熟练掌握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:
/** 构造函数 */
您可能关注的文档
最近下载
- 风力发电机模拟软件:FAST二次开发_(3).FAST模拟器架构解析.docx VIP
- 语文三年级下册专项训练:阅读.doc VIP
- 金属制品项目企业经营战略方案.docx
- 人工智能导论课件 第十三章 类脑智能.pptx VIP
- 招聘面试题大全.doc VIP
- 北师大版小学数学六年级下册各单元思维导图.pdf
- 中考物理常考估测汇总及估测训练100题(模拟50题+真题50题)(原卷版).docx VIP
- 岩壁梁悬臂模板施工方案.docx VIP
- 碳纤维片材加固混凝土结构技术规程(2007年版) CECS146:2003.pdf VIP
- 新人教版(2025)小学三年级英语下册第六单元Unit 6 单元整体教学设计.docx VIP
文档评论(0)