《虚拟现实与系统仿真》实验指导书- 修订(5)

2019-01-27 21:22

mb_adjustGLfloat(m_redCorner, 0.0f, 1.0f); m_blueCorner=1.0f-m_redCorner;

m_angle+=1.0; if (m_angle>360) m_angle=0.0; mb_calculatePoint( ); } // 函数mb_nextFrame结束

6.在COpenGLPlatView类开头添加

#include \

在view中添加一个WM_TIMER函数

void COpenGLPlatView::OnTimer(UINT_PTR nIDEvent) {

// TODO: 在此添加消息处理程序代码和/或调用默认值 COpenGLPlatDoc* pDoc=GetDocument(); ASSERT_VALID(pDoc); if(!pDoc) return;

pDoc->m_star.mb_nextFrame(); Invalidate(); }

CView::OnTimer(nIDEvent);

在COpenGLPlatDoc类中添加m_star变量:

public:

Star m_star;

7.在view中的OnCreate函数中添加时间触发:

int COpenGLPlatView::OnCreate(LPCREATESTRUCT lpCreateStruct) {

if (CView::OnCreate(lpCreateStruct) == -1)

return -1;

// TODO: 在此添加您专用的创建代码

……….. ……….

SetTimer(1,33,NULL); }

return 0;

8.在view中的OnDestroy函数中添加代码:

KillTimer(1);

9.在OpenGLPlatView.cpp中OnDraw函数中添加以下代码

void CMy4View::OnDraw(CDC* pDC)

{

CMy4Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

if (!pDoc) return;

wglMakeCurrent(pDC->m_hDC,m_hRC); glClearColor(1.0f,1.0f,1.0f,1.0f);

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS);

glEnable(GL_AUTO_NORMAL);

glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //设置光源参数

glRotated(pDoc->m_star.m_angle, 1.0, 1.0, 1.0); pDoc->m_star.mb_draw();

// TODO: 在此处为本机数据添加绘制代码 wglMakeCurrent(NULL,NULL); SwapBuffers(pDC->m_hDC);

GLfloat light_position[]={1.0f,1.0f,1.0f,0.0f}; GLfloat light_ambient[]={0.2f,0.2f,0.2f,0.2f}; GLfloat light_diffuse[]={0.5f,0.5f,0.2f,0.2f}; GLfloat light_specular[]={0.5f,0.5f,0.5f,0.2f}; glLightfv(GL_LIGHT0,GL_POSITION,light_position); glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular); //设置材质参数

GLfloat material_ambient[]={0.2f,0.2f,0.2f,0.2f}; GLfloat material_diffuse[]={0.2f,0.8f,0.4f,0.8f}; GLfloat material_specular[]={0.2f,0.8f,0.4f,0.8f}; GLfloat material_emission[]={0.2f,0.2f,0.2f,1.0f}; GLfloat material_shiness[]={10.0f};

glMaterialfv(GL_BACK,GL_DIFFUSE,material_diffuse); glMaterialfv(GL_BACK,GL_SPECULAR,material_specular); glMaterialfv(GL_BACK,GL_EMISSION,material_emission); glMaterialfv(GL_BACK,GL_SHININESS,material_shiness);

glMaterialfv(GL_BACK,GL_AMBIENT,material_ambient);//FRONT_AND_BACK

}

实验六 OpenGL交互与动画

一:实验目的:

1. 掌握利用glut实现OpenGL鼠标键盘交互的方法。 2. 掌握利用glut实现OpenGL动画的方法。

二:实验内容:

1. 利用鼠标点击、拖动和键盘按键实现一个矩形的移动。 2. 使用双缓存绘制旋转正方形。 3. 反弹方块动画。

三:实验要求

通过本实验,掌握鼠标点击、拖动和键盘按键的响应方法,利用空闲函数和定时器函数实现动态绘制的方法,利用双缓存机制连贯地显示动画图形的方法。

四:实验步骤

1:实现一个利用鼠标点击、拖动和键盘按键移动矩阵的程序。

1)File->New->Project 选择Win32应用程序 输入名称HelloOpenGL

2)点击“OK”后,在后续的对话框中选中Empty project,然后点击Finish。

3)右击项目名,选择属性(property),再选择链接器(Linker)中的输入选项(Input),附加依赖项(Additional Dependencies):opengl32.lib glu32.lib glaux.lib


《虚拟现实与系统仿真》实验指导书- 修订(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新苏教版四年级上册数学知识点复习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: