没有合适的资源?快使用搜索试试~ 我知道了~
杭州电子科技大学《实时三维图形绘制》OpenGL大作业实验报告
需积分: 0 0 下载量 42 浏览量
2024-01-06
13:50:26
上传
评论
收藏 659KB DOCX 举报
温馨提示
试读
26页
opengl大作业 杭州电子科技大学《实时三维图形绘制》OpenGL大作业实验报告 OpenGL大作业可以有很多不同的主题和要求,以下列举几个可能的选项: 1. 实现一个3D迷宫游戏。要求使用OpenGL绘制迷宫地图、玩家角色、墙壁等元素,并实现玩家在迷宫中的移动、碰撞检测等功能。 2. 制作一个3D场景渲染器。要求使用OpenGL绘制多个物体(如球体、立方体、茶壶等),并实现光照效果、阴影效果等高级特性。 3. 开发一个基于OpenGL的物理引擎。要求使用OpenGL模拟物体的运动、碰撞、重力等物理行为,并实现可视化效果。 4. 实现一个基于OpenGL的图像处理程序。要求使用OpenGL对图像进行滤波、变换、分割等操作,并实现实时预览功能。 5. 制作一个基于OpenGL的动画程序。要求使用OpenGL绘制多个骨骼动画,并实现骨骼动画的混合、过渡等效果。 以上只是一些可能的大作业主题,具体可以根据自己的兴趣和能力来选择。无论选择哪个主题,都需要深入学习OpenGL的相关知识和技术,并进行充分的实践和调试。
资源推荐
资源详情
资源评论
实时三维图形绘制
实验报告
基于粒子系统的雪花场景模拟
一、实验目的
通过一学期对《实时三维图形绘制》的学习,在熟练掌握 OpenGL 理论的前
提下,动手实践,将课本知识转化为实际应用。
二、实验要求
编程实现绘制 OpenGL 场景并可交互式操作,体现课堂所学内容。
三、实验内容
1、搭建 OpenGL 程序框架
首先在 VS2015 中新建项目,在该项目中建立 3 个主要的类:GLWindow、Keys
和 GLApplication,其中 GLWindow 类负责窗口属性的设置,包括建立、更新、
删除窗口等操作。Keys 类负责读取键盘的输入,这样才能实现交互的要求。
GLApplication 类负责建立我们的应用程序,包括初始化、更新、绘制图形等操
作。
(1)窗口类 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; /**< 是否全屏 */
};
(2)键盘类 Keys 的设计
定义键盘类 Keys 对我们的按键信息进行记录,用于程序达到交互的目的。
/** 定义键盘类 */
class Keys
{
public:
/** 构造函数 */
Keys() { Clear(); }
/** 清空所有的按键信息 */
void Clear() { ZeroMemory(&m_KeyDown, sizeof(m_KeyDown)); }
/** 判断某个键是否按下 */
bool IsPressed(unsigned int key) { return (key < MAX_KEYS) ? (m_KeyDown[key] ==
true) : false; }
/** 设置某个键被按下 */
void SetPressed(unsigned int key) { if (key < MAX_KEYS) m_KeyDown[key] = true; }
/** 设置某个键被释放 */
void SetReleased(unsigned int key) { if (key < MAX_KEYS) m_KeyDown[key] = false; }
private:
static const unsigned int MAX_KEYS = 256;
bool m_KeyDown[MAX_KEYS]; /**< 保存 256 个按键的状态 */
};
(3)应用程序类 GLApplication 的设计
剩余25页未读,继续阅读
资源评论
RDSunday
- 粉丝: 232
- 资源: 171
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功