- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有正确结果的三维实体实验报告
地理与生物信息学院
2012 / 2013 学年第 一 学期
实 验 报 告
课程名称: 计算机图形学(双语)
实验名称: 使用OpenGL编程实现
一个三维消隐实体
班 级 学 号
学 生 姓 名 周炳威
指 导 教 师 曹 正 林
日 期: 2012 年 12 月
一、实验题目:
使用OpenGL编程实现一个三维消隐实体
二、实验要求:
学习Visual C++ 6.0 集成编程环境的使用;掌握OpenGL中材质属性的设置,光源的建立,光照与着色参数的设置方法,光照系统的启动与禁用方法,glut实用三维实体绘制函数的使用等基础知识;编程实现一个赋予相应材质和光照的三维实体,并得出相应的输出图形。
三、实验内容:
1. 学习Visual C++ 6.0集成编成环境的使用;
2. 掌握OpenGL中材质属性的设置,光源的建立,光照与着色参数的设置方法,光照系统的启动与禁用方法,glut实用三维实体绘制函数的使用;
3. 编程实现一个赋予相应材质和光照的三维实体,并得出相应的输出图形;
四、实验过程:
1.算法的基本描述
设定定时器
设定物体旋转的速度,控制转轴
设定与菜单的映射函数
在函数中初始化全局变量
设定展示函数
1.定义物体的表面材质
2.建立光源
3.选择光照和着色参数
4.启动光照计算
在场景渲染中调用展示函数,完成绘制
2.算法的源程序
框架中需要我们修改的程序代码:
int CMySDOpenGLView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
axis=0;
// TODO: Add your specialized creation code here
//////////////////////////////////////////////////////////////////
//初始化OpenGL和设置定时器
m_pDC = new CClientDC(this);
SetTimer(1, 20, NULL);
InitializeOpenGL(m_pDC);
//////////////////////////////////////////////////////////////////
return 0;
}
void CMySDOpenGLView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(theta=360)
{
axis=(axis+1)%4;
}
theta=(theta360)?theta+0.5:0.5;
/////////////////////////////////////////////////////////////////
//添加定时器响应函数和场景更新函数
Invalidate(FALSE);
/////////////////////////////////////////////////////////////////
CView::OnTimer(nIDEvent);
}
//////////////////////////////////////////////////////////
// 场景绘制与渲染
//////////////////////////////////////////////////////////
BOOL CMySDOpenGLView::RenderScene()
{
glLoadIdentity();
CRect rect;
GetClientRect(rect);
gluOrtho2D(0.0,rect.right,0.0,rect.bottom);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
//draw();
display();
glFlush();
::SwapBuffers(
文档评论(0)