研究生计算机图形学课程室内场景OpenGL--实验报告Word版

合集下载

计算机图形学实验报告

计算机图形学实验报告

实验一 3D模型的加载、渲染与三维操作

学院:

专业班级:

指导老师:

学号:

姓名:

完成日期:

目录

一、实验目的 (3)

二、使用的工具软件及环境 (3)

三、实验内容 (3)

四、实验步骤 (3)

五、思考 (12)

一、实验目的

1、掌握在Microsoft Visual Studio环境中使用OpenGL、GLUT和GLUI;

2、了解计算机图形学固定流水线;

3、了解OpenGL编程基础;

4、掌握三维观察的数学表达和程序实现;

5、掌握多边形网格的绘制;

二、使用的工具软件及环境

Microsoft Visual Studio 2010、OpenGL、Glut、Glui

三、实验内容

1、在VS 2010中配置OpenGL环境;

2、编译简单的GLUT程序;

3、编译GLUI源代码,并在调试模式下执行6个示例程序;

4、在给定的工程中添加绘制简单几何体的代码;

5、在给定的工程中添加读取、绘制三维模型的代码;

6、在给定的工程中添加旋转、平移和缩放的控制代码;

四、实验步骤

1、安装Microsoft Visual Studio软件

版本选择:Microsoft Visual Studio 2010以上版本

2、VS2010中配置GLUT

1)下载GLUT。Windows环境下的GLUT下载地址:

/resources/libraries/glut/glutdlls37beta.zip

2)将下载的压缩包解开,将得到5个文件:glut.h、glut.lib、glut32.lib、

glut.dll、glut32.dll。3)将glut.h放到"%WinDir%\Program

图形学实验报告 OpenGL中的实体模型与层次模型

图形学实验报告 OpenGL中的实体模型与层次模型

《计算机图形学基础》

实验3

OpenGL中的实体模型与层次模型

一、实验目的及要求

1.掌握GLUT库中的多面体函数的绘制方法;

2.掌握GLUT库中的二、三次曲面的绘制方法;

3.掌握绘制实体或线框模型的绘制方法;

4.掌握显示列表的用法;

二、实验环境

主要是软件开发环境:VC 6.0

三、实验内容

1.利用OpenGL绘制简单多面体、二次及三次曲线的例子。

2.利用OpenGL绘制奥运五环标志。

四、实验结果

1、利用OpenGL绘制简单多面体、二次及三次曲线的例子。

2、利用OpenGL绘制奥运五环标志

五、程序代码

1、利用OpenGL绘制简单多面体、二次及三次曲线#include

static GLsizei iMode = 1;

static GLfloat xRot = 0.0f; //x方向旋转参数

static GLfloat yRot = 0.0f; //y方向旋转参数GLUquadricObj *obj; //二次曲面对象

void Initial(void)

{

glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

glColor3f(0.0f, 0.0f, 0.0f);

obj = gluNewQuadric( );

gluQuadricDrawStyle(obj, GLU_LINE); //以线框方式绘制二次曲面对象

}

void ChangeSize(int w, int h)

{

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告

实验一 3D模型的加载、渲染与三维操作

学院:

专业班级:

指导老师:

学号:

姓名:

完成日期:

目录

一、实验目的 (3)

二、使用的工具软件及环境 (3)

三、实验内容 (3)

四、实验步骤 (3)

五、思考 (12)

一、实验目的

1、掌握在Microsoft Visual Studio环境中使用OpenGL、GLUT 和GLUI;

2、了解计算机图形学固定流水线;

3、了解OpenGL编程基础;

4、掌握三维观察的数学表达和程序实现;

5、掌握多边形网格的绘制;

二、使用的工具软件及环境

Microsoft Visual Studio 2010、OpenGL、Glut、Glui

三、实验内容

1、在VS 2010中配置OpenGL环境;

2、编译简单的GLUT程序;

3、编译GLUI源代码,并在调试模式下执行6个示例程序;

4、在给定的工程中添加绘制简单几何体的代码;

5、在给定的工程中添加读取、绘制三维模型的代码;

6、在给定的工程中添加旋转、平移和缩放的控制代码;

四、实验步骤

1、安装Microsoft Visual Studio软件

版本选择:Microsoft Visual Studio 2010以上版本

2、VS2010中配置GLUT

1)下载GLUT。Windows环境下的GLUT下载地址:

/resources/libraries/glut/glutdlls37be ta.zip

2)将下载的压缩包解开,将得到5个文件:glut.h、glut.lib、glut32.lib、

glut.dll、glut32.dll。3)将glut.h放到"%WinDir%\Program

opengl实验报告

opengl实验报告

opengl实验报告

OpenGL实验报告

引言:

OpenGL(Open Graphics Library)是一种跨平台的图形编程接口,被广泛应用

于计算机图形学、游戏开发和科学可视化等领域。本实验报告将介绍我对OpenGL的实验研究和学习成果。

一、实验目的

本次实验的主要目的是掌握OpenGL的基本概念和使用方法,了解图形渲染的

原理和过程,以及学习如何在OpenGL中创建和操作图形对象。

二、实验环境

本次实验使用的是OpenGL的最新版本,并在Windows操作系统下进行开发。使用的开发工具是Visual Studio和OpenGL的开发库。

三、实验过程

1. 熟悉OpenGL的基本概念

在开始实验之前,我先学习了OpenGL的基本概念,包括OpenGL的坐标系统、图形渲染管线、着色器等。了解这些概念对于后续的实验非常重要。

2. 创建窗口和上下文

在OpenGL中,我们需要先创建一个窗口和一个OpenGL上下文,以便进行图

形渲染。通过调用相关的OpenGL函数,我成功创建了一个窗口,并初始化了OpenGL的上下文。

3. 绘制基本图形

接下来,我开始尝试绘制一些基本的图形,比如点、线和三角形。通过设置顶

点坐标和颜色,我成功绘制出了这些基本图形,并在窗口中显示出来。

4. 添加纹理

为了使图形更加逼真和丰富,我学习了如何在OpenGL中添加纹理。通过加载图片并设置纹理坐标,我成功将纹理贴在了绘制的图形上,使其具有了更加真实的效果。

5. 光照和阴影效果

为了增加图形的立体感和真实感,我学习了如何在OpenGL中添加光照和阴影效果。通过设置光源的位置和属性,以及材质的属性,我成功实现了光照和阴影的效果,使图形看起来更加逼真。

计算机图形学实验报告一

计算机图形学实验报告一

《计算机图形学》实验报告

//圆

pDC->SelectObject(&pen2);

pDC->Ellipse(50,120,150,220);

pDC->SelectObject(&pOldBrush);

//椭圆

pDC->SelectObject(&pen2);

pDC->Ellipse(600, 100, 1025, 325);

pDC->SelectObject(&pOldBrush);

//多边形

pDC->SelectObject(&pen2);

pDC->SelectObject(&pen2);

CPoint lpPoint[5];

lpPoint[0] = CPoint(200,200);

lpPoint[1] = CPoint(100, 300);

lpPoint[2] = CPoint(150, 400);

lpPoint[3] = CPoint(250, 400);

lpPoint[4] = CPoint(300, 300);

pDC->Polygon(lpPoint,5);

//圆弧

pDC->SelectObject(&pen2);

pDC->SelectObject(&pen2);

pDC->Arc(450,200,650,550,50,50,600,900);

2、练习使用GDI函数显示图像

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(1000, 1000);

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告

在计算机图形学课程中,实验是不可或缺的一部分。通过实验,我们可以更好地理解课程中所学的知识,并且在实践中掌握这些

知识。在本次实验中,我学习了如何使用OpenGL绘制三维图形,并了解了一些基本的图形变换和视图变换。

首先,我们需要通过OpenGL的基本命令来绘制基本图形,例

如线段、矩形、圆等。这些基本的绘制命令需要首先设置OpenGL 的状态,例如绘制颜色、线段宽度等,才能正确地绘制出所需的

图形。

然后,在实验中我们学习了图形的变换。变换是指通过一定的

规则将图形的形状、位置、大小等进行改变。我们可以通过平移、旋转、缩放等变换来改变图形。变换需要按照一定的顺序进行,

例如先进行旋转再进行平移等。在OpenGL中,我们可以通过设

置变换矩阵来完成图形的变换。变换矩阵包含了平移、旋转、缩

放等信息,通过矩阵乘法可以完成图形的复合变换。

最后,视图变换是指将三维场景中的图形投影到二维平面上,

成为我们所见到的图形。在实验中,我们学习了透视投影和正交

投影两种方式。透视投影是指将场景中的图形按照视点不同而产

生不同的远近缩放,使得图形呈现出三维感。而正交投影则是简单地将场景中的图形按照平行投影的方式呈现在屏幕上。在OpenGL中,我们可以通过设置视图矩阵和投影矩阵来完成视图变换。

通过本次实验,我对于计算机图形学有了更深入的了解,并掌握了一些基本的图形绘制和变换知识。在今后的学习中,我将继续学习更高级的图形绘制技术,并应用于实际的项目中。

研究生计算机图形学课程室内场景OpenGL--实验报告

研究生计算机图形学课程室内场景OpenGL--实验报告

《高级计算机图形学》实验报告

姓名:学号:班级:

【实验报告要求】

实验名称:高级计算机图形学室内场景

实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。

实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、

纹理映射技术以及实时绘制技术。

一、实验效果图

图1:正面效果图

图2:背面效果图

图4:背面效果图

图4:室内场景细节效果图

图5:场景角度转换效果图

二、源文件数据代码:

共6个文件,其实现代码如下:

1、DlgAbout.cpp

#include "StdAfx.h"

#include "DlgAbout.h"

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

2、FormCommandView.cpp

#include "stdafx.h"

#include "Tool.h"

#include "MainFrm.h"

#include "FormCommandView.h"

#include "ToolDoc.h"

计算机图形学实验报告=

计算机图形学实验报告=

要点三
可视化参数调整
通过调整VTK中的可视化参数,如颜 色映射、透明度等,实现了对数据分 布和特征的精细展示。
性能评估与分析
01
帧率测试
通过记录每秒渲染的帧数(FPS), 我们对渲染性能进行了评估。在保证 图像质量的同时,我们的程序实现了 较高的帧率,保证了流畅的视觉体验 。
02
内存使用分析
通过分析内存使用情况,我们发现程 序的内存占用随着数据量和模型复杂 度的增加而增加,但仍在可接受的范 围内。
图形优化
为了提高渲染效率,我们采用了多种优化技术,如裁剪、视野裁剪、屏幕空间排序等。
数据可视化结果
要点一
基于VTK的数据可视 化
使用VTK库,我们成功地将3D医学影 像数据(如CT、MRI)导入并实现了 数据的可视化。
要点二
数据预处理
为了更好地展示数据,我们对原始数 据进行了多种预处理,如去噪、平滑 、插值等。
需要进一步深入研究
实验中涉及的原理和技术较多,需要进一步深入研究和理解。
研究展望与未来发展
图形学技术的进一步 发展
随着计算机技术和硬件性能的不 断提升,计算机图形学将会有更 多的发展空间和可能性。未来, 我们可以期待更多的图形学技术 和应用的出现。
跨领域应用
计算机图形学在游戏开发、电影 制作、虚拟现实等领域的应用越 来越广泛,未来我们可以期待其 在更多领域的应用和发展。

计算机图形学实验报告

计算机图形学实验报告

04
实验四:渲染复杂场景
实验目的
掌握渲染复杂场景的基本流程和方法 理解光线追踪和着色器在渲染过程中的作用
熟悉渲染引擎的实现原理和技巧 提高解决实际问题的能力
实验步骤
• 准备场景文件 • 使用3D建模软件(如Blender)创建或导入场景模型,导出为常用的3D格式(如.obj或.fbx)。 • 导入场景文件 • 在渲染引擎(如Unity或Unreal Engine)中导入准备好的场景文件。 • 构建场景图 • 根据场景的层次结构和光照需求,构建场景图(Scene Graph)。 • 设置光照和材质属性 • 为场景中的物体设置光照和材质属性(如漫反射、镜面反射、透明度等)。 • 编写渲染脚本 • 使用编程语言(如C或JavaScript)编写渲染脚本,控制场景中物体的渲染顺序和逻辑。 • 运行渲染程序 • 运行渲染程序,观察渲染结果。根据效果调整光照、材质和渲染逻辑。 • 导出渲染图像 • 将渲染结果导出为图像文件(如JPEG或PNG),进行后续分析和展示。
2. 通过属性设置和变换操作,实现了对图形的定 制和调整,加深了对图形属性的理解。
4. 实验的不足之处:由于时间限制,实验只涉及 了基本图形的绘制和变换,未涉及更复杂的图形 处理算法和技术,如光照、纹理映射等。需要在 后续实验中进一步学习和探索。
02
实验二:实现动画效果
实验目的

实验一 opengl高级图形图像实验报告

实验一 opengl高级图形图像实验报告

高级图形图像第一次实验报告

一、实验描述以及关键步骤

1.opengl编程环境组建(基于VC6.0)

1)下载opengl开发库文件夹;

2)复制glut32.dll和glut.dll到…\windows\system32;

3)复制glut.h到...\Microsoft Visual Studio\VC98\Include\GL;

4)复制glut32.lib和glut.lib到…\Microsoft Visual Studio\VC98\Lib;

5)新建工程后,进入Project菜单,选Settings项,弹出 Settings 对话框,选Link

项,在 Libraries 栏目中加入OpenGL库:opengl32.lib glu32.lib glaux.lib。

2.基本图形绘制

首先运行一个Windows环境下的一个基本OpenGL程序,直接打开60version文件夹内的工程,它将显示一个空的OpenGL窗口,可以在定制窗口大小和全屏模式下切换(按F1),按ESC退出,该程序为以后的应用程序提供了实验平台,并预留了绘图接口。

根据教材P67-70,了解绘制函数,根据附件2提供的源码baseshape.cpp,将该文件内的场景绘制函数Drawsence()替代空窗口程序中的同名函数,修改图形绘制命令和参数,显示出点、线、矩形、三角形等,可设置不同线宽。

3.图形的二维变换

根据附件3提供源码,将该文件内的场景绘制函数Drawsence()替代空窗口程序中的同名函数,通过调用glTranslate*, glRotate*,glscale*等二维变换函数实现平移、旋转、缩放等变换,通过参数操作和矩阵操作两种方式执行。

计算机图形学实验报告(一).doc

计算机图形学实验报告(一).doc

实验一OpenGL开发环境及扫描转换算法

1、实验目的与要求

1.通过实验掌握OpenGL中编程环境的设置,了解相关函数用途及设置步骤;

2.通过实验掌握基本图形元素的生成,给出相关代码和运行结果;

3.用WINDOWS GDI函数编写生成直线或区域填充的程序(选DDA或Bresenham直线算法,活

性边表算法填充多边形),演示算法过程。

4.画矩形,调用一个函数画一个矩形。画椭圆,调用一个函数画一个椭圆。画Bezier 曲线。

2、实验方案

请描述为达到实验的需要完成哪些方面的实验,列举出实验的基本要点和重点。

在工程WinAPIEX加入void createLine(HDC tmpDC)和void Polyline (tmpDC)

在void createLine(HDC tmpDC)用DDA直线算法或Bresenham直线算法生成直线

在void Polyline (tmpDC)添加活泩边表填充算法,生成填充四边形和八边形

加入Rectangle(tmpDC,x0,y0,x1,y1);加入Ellipse (tmpDC, x0,y0,a,b) ;加入PolyBezier(tmpDC,arr_vertex,4) ;

3、实验结果和数据处理

1)生成直线的DDA直线算法

在createLine(tmpDC)中加入以下代码int x0,y0,x1,y1,color; //自定义直线的起点(x0,y0)和终点(x1,y1),及颜色color

float dx,dy,x,y;

int length,i;

x0=50;

y0=160;

图形学实验报告 OpenGL中基本图形的绘制

图形学实验报告 OpenGL中基本图形的绘制

《计算机图形学基础》

实验4 OpenGL中基本图形的绘制

一、实验目的及要求

1.掌握OpenGL中点的绘制方法。

2.掌握OpenGL中直线的绘制方法。

3.掌握OpenGL中多边形面的绘制方法。

4. 掌握OpenGL中字符函数的绘制方法。

二、实验环境

主要是软件开发环境vc 6.0

三、实验内容

OpenGL实现直线段的反走样。

四、实验结果

五、程序代码

#include <gl/glut.h>

GLuint lineList; //指定显示列表ID

void Initial()

{

glClearColor(1.0f, 1.0f, 1.0f, 0.0f);

glLineWidth(12.0f);

glColor4f (0.0, 0.6, 1.0, 1.0);

lineList = glGenLists(1);

glNewList(lineList, GL_COMPILE); //定义显示列表glBegin(GL_LINE_LOOP);

glVertex2f(1.0f, 1.0f);

glVertex2f(4.0f, 2.0f);

glVertex2f(2.0f, 5.0f);

glEnd();

glEndList();

}

void ChangeSize(GLsizei w, GLsizei h)

{

if(h == 0) h = 1;

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

if(w<=h)

gluOrtho2D(0.0, 5.0, 0.0, 6.0*(GLfloat)h/(GLfloat)w);

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告

引言

计算机图形学是研究计算机生成和处理图像的学科,它在现代科技和娱乐产业中扮演着重要的角色。本实验报告旨在总结和分享我在计算机图形学实验中的经验和收获。

一、实验背景

计算机图形学实验是计算机科学与技术专业的一门重要课程,通过实践操作和编程,学生可以深入了解图形学的基本原理和算法。本次实验主要涉及三维图形的建模、渲染和动画。

二、实验内容

1. 三维图形建模

在实验中,我们学习了三维图形的表示和建模方法。通过使用OpenGL或其他图形库,我们可以创建基本的几何体,如立方体、球体和圆柱体,并进行变换操作,如平移、旋转和缩放。这些基本操作为后续的图形处理和渲染打下了基础。

2. 光照和着色

光照和着色是图形学中重要的概念。我们学习了不同的光照模型,如环境光、漫反射和镜面反射,并了解了如何在三维场景中模拟光照效果。通过设置材质属性和光源参数,我们可以实现逼真的光照效果,使物体看起来更加真实。3. 纹理映射

纹理映射是一种将二维图像映射到三维物体表面的技术。通过将纹理图像与物

体的顶点坐标相对应,我们可以实现更加细致的渲染效果。在实验中,我们学

习了纹理坐标的计算和纹理映射的应用,使物体表面呈现出具有纹理和细节的

效果。

4. 动画和交互

动画和交互是计算机图形学的重要应用领域。在实验中,我们学习了基本的动

画原理和算法,如关键帧动画和插值技术。通过设置动画参数和交互控制,我

们可以实现物体的平滑移动和变形效果,提升用户体验。

三、实验过程

在实验过程中,我们首先熟悉了图形库的使用和基本的编程技巧。然后,我们

计算机图形学报告

计算机图形学报告

沈阳航空航天大学

计算机图形学实验报告

班级:34140102学号:20130 姓名:成绩:

指导教师:

实验一:OpenGL绘制球体线框图

1.实验目的:

本实验要求熟悉OpenGL基本图元函数的使用。

通过使用OpenGL及GLUT库在Visual C++环境下编写图形绘制程序掌握图形绘制的一般框架,从而为进一步做综合性的图形绘制实验奠定基础

2.实验要求:

编写一个程序,在窗口中显示一个旋转的球体线框,利用光标键可启动图形旋转切换视点。

3.实验过程:

先配置环境,把相关文件放到相应的文件夹

C:\Program Files\Microsoft Visual Studio\VC98\Include\GL C:\WINDOWS\system32 C:\Program Files\Microsoft Visual Studio\VC98\Lib

建一个新工程,比照pdf敲代码

再通过VC++进行编译

4.实验结果:

程序运行后,弹出窗口,使用光标键可使球体旋转。

代码:include

#include

#include

#include

#include

void init();

void CALLBACK reshapae(GLsizei w,GLsizei h);

void CALLBACK display();

GLfloat s, h;

//回调函数,绘制窗口时调用

void CALLBACK display()

{

//清空窗口设置背景为白色

glClearColor(1, 1, 1, 1);

glClear(GL_COLOR_BUFFER_BIT);

计算机图形学实验报告三

计算机图形学实验报告三

《计算机图形学》实验报告

glClear(GL_COLOR_BUFFER_BIT);

//glEnable(GL_SCISSOR_TEST);

//glScissor(0.0f,0.0f,500,300);

glutWireTeapot(0.4);

glFlush();

}

//窗口调整子程序

void myReshape(int w, int h)

{

glViewport(500, -300, (GLsizei)w, (GLsizei)h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

if (w <= h)

glOrtho(-1, 1, -(float)h / w, (float)h / w, -1, 1);

else

glOrtho(-(float)w / h, (float)w / h, -1, 1, -1, 0.5);

}

2,使用opengl函数写一个图形程序,要求分别使用三个光源从一个茶壶的前右上方(偏红色),正左侧(偏绿色)和前左下方(偏蓝色)对于其进行照射,完成程序并观察效果。

}

//绘图子程序

void display(void)

{

glColor3f(1.0, 1.0, 0.0);

glClear(GL_COLOR_BUFFER_BIT);

//glMatrixMode(GL_MODELVIEW);

//glLoadIdentity();

//设置光源的属性1

GLfloat LightAmbient1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; //环境光参数 ( 新增 )

(完整word版)计算机图形学实验报告一(word文档良心出品)

(完整word版)计算机图形学实验报告一(word文档良心出品)

《计算机图形学》实验报告

//圆

pDC->SelectObject(&pen2);

pDC->Ellipse(50,120,150,220);

pDC->SelectObject(&pOldBrush);

//椭圆

pDC->SelectObject(&pen2);

pDC->Ellipse(600, 100, 1025, 325);

pDC->SelectObject(&pOldBrush);

//多边形

pDC->SelectObject(&pen2);

pDC->SelectObject(&pen2);

CPoint lpPoint[5];

lpPoint[0] = CPoint(200,200);

lpPoint[1] = CPoint(100, 300);

lpPoint[2] = CPoint(150, 400);

lpPoint[3] = CPoint(250, 400);

lpPoint[4] = CPoint(300, 300);

pDC->Polygon(lpPoint,5);

//圆弧

pDC->SelectObject(&pen2);

pDC->SelectObject(&pen2);

pDC->Arc(450,200,650,550,50,50,600,900);

2、练习使用GDI函数显示图像

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(1000, 1000);

glutInitWindowPosition(0, 0);

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《高级计算机图形学》实验报告

姓名:学号:班级:

【实验报告要求】

实验名称:高级计算机图形学室内场景

实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。

实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、

纹理映射技术以及实时绘制技术。

一、实验效果图

图1:正面效果图

图2:背面效果图

图4:背面效果图

图4:室内场景细节效果图

图5:场景角度转换效果图

二、源文件数据代码:

共6个文件,其实现代码如下:

1、DlgAbout.cpp

#include "StdAfx.h"

#include "DlgAbout.h"

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

2、FormCommandView.cpp

#include "stdafx.h"

#include "Tool.h"

#include "MainFrm.h"

#include "FormCommandView.h"

#include "ToolDoc.h"

#include "RenderView.h"

// Download by

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

// CFormCommandView

IMPLEMENT_DYNCREATE(CFormCommandView, CFormView)

CFormCommandView::CFormCommandView()

: CFormView(CFormCommandView::IDD)

{

//{{AFX_DATA_INIT(CFormCommandView)

m_Smooth = FALSE;

m_Antialias = FALSE;

//}}AFX_DATA_INIT

}

CFormCommandView::~CFormCommandView()

{

}

void CFormCommandView::DoDataExchange(CDataExchange* pDX)

{

CFormView::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CFormCommandView)

DDX_Control(pDX, IDC_FRAME_COLOR_BACK, m_ControlBackColor);

DDX_Check(pDX, IDC_CHECK_SMOOTH, m_Smooth);

DDX_Check(pDX, IDC_CHECK_ANTIALIAS, m_Antialias);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CFormCommandView, CFormView)

//{{AFX_MSG_MAP(CFormCommandView)

ON_WM_PAINT()

ON_WM_LBUTTONUP()

ON_BN_CLICKED(IDC_RADIO_MODEL_1, OnRadioModel1)

ON_BN_CLICKED(IDC_RADIO_MODEL_2, OnRadioModel2)

ON_BN_CLICKED(IDC_CHECK_SMOOTH, OnCheckSmooth)

ON_BN_CLICKED(IDC_CHECK_ANTIALIAS, OnCheckAntialias)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////// ////

// CFormCommandView diagnostics

#ifdef _DEBUG

void CFormCommandView::AssertValid() const

{

CFormView::AssertValid();

}

void CFormCommandView::Dump(CDumpContext& dc) const

{

CFormView::Dump(dc);

}

CToolDoc* CFormCommandView::GetDocument() // non-debug version is inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CToolDoc)));

return (CToolDoc*)m_pDocument;

}

#endif //_DEBUG

// OnPaint

void CFormCommandView::OnPaint()

{

// Device context for painting

CPaintDC dc(this);

// Options are stored in Application

CToolApp *pApp = (CToolApp *)AfxGetApp();

CRect rect;

// Color back

m_ControlBackColor.GetWindowRect(&rect);

ScreenToClient(&rect);

CBrush BrushBack(pApp->m_OptionColorGlBack);

dc.FillRect(&rect,&BrushBack);

}

// OnLButtonUp

void CFormCommandView::OnLButtonUp(UINT nFlags,

CPoint point)

{

CRect rect;

CToolApp *pApp = (CToolApp *)AfxGetApp();

相关文档
最新文档