第一范文网 - 专业文章范例文档资料分享平台

华北电力大学 计算机图形学实验报告

来源:用户分享 时间:2025/8/5 15:25:57 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

科 技 学 院

课程设计(综合实验)报告

( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验

课程名称 计算机图形学

专业班级:计算机11K1 学生姓名:曲强

学 号:111909010118 成 绩:

指导教师:姜丽梅 实验日期:2014.6.5

| |

实验一、OpenGL基本图元绘制实验

一、 实验目的及要求

1. 掌握计算机图形学及交互式计算机图形学的定义,了解OpenGL的功能及工作流

程,掌握基于OpenGL Glut库的程序框架。

2. 掌握基本的二维线画图元的绘制算法及属性,掌握OpenGL基本图元的绘制。 3. 理解二维、三维图形的绘制流程,掌握二维图形和三维图形的图形变换。 4. 了解形体的真实感表示的内容,包括消隐技术、简单光照明模型、多边形的明暗

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

5. 要求使用OpenGL及GLUT库在Visual C++环境下编写图形绘制程序实现基本图

元绘制。

6. 要求对绘制的简单场景综合利用几何变换或gluLookAt函数实现交互式三维观

察程序。

二、 实验内容

在两个具有不同属性的窗口中分别显示一个旋转的三角形来演示单缓存和双缓存,在旋转过程中不断改变图形的颜色,利用鼠标或菜单可终止/启动图形旋转。明确程序包括哪些函数,各个函数的功能以及整个流程,从而为进一步做综合性的图形绘制实验奠定基础。

三、 所用仪器、设备

Windows XP系统,Visual C++,OpenGL及GLUT库

四、 实验方法与步骤

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

C:\\Program Files\\Microsoft Visual Studio\\VC98\\Include\\GL

C:\\WINDOWS\\system32

C:\\Program Files\\Microsoft Visual Studio\\VC98\\Lib

再通过VC++进行编译

五、 程序代码

#include #include #include < stdio.h >

#include

#define DEG_TO_RAD 0.017453 static GLfloat theta = 0.0;

GLfloat r = 1.0; //设置三角形的初始颜色 GLfloat g = 0.0; GLfloat b = 0.0; int singleb,doubleb; void display(void)

{ glClear(GL_COLOR_BUFFER_BIT); //三角形颜色渐变

glColor3f(r, g,b);

r = r - 0.002;

g = g + 0.002; b = b + 0.001; if(r < 0.001) { r = 1.0; g = 0.0; b = 0.0;

}

glBegin(GL_POLYGON);

glVertex2f(cos(DEG_TO_RAD*theta), sin(DEG_TO_RAD*theta)); glVertex2f(cos(DEG_TO_RAD*(theta+120)),

sin(DEG_TO_RAD*(theta+120)));

glVertex2f(cos(DEG_TO_RAD*(theta+240)),

sin(DEG_TO_RAD*(theta+240)));

glEnd();

glutSwapBuffers();

}

void spinDisplay (void) //三角形转动弧度设置 {

theta = theta +5; if (theta > 360.0)

theta = theta - 360.0;

glutSetWindow(singleb);

glutPostWindowRedisplay(singleb); glutSetWindow(doubleb);

glutPostWindowRedisplay(doubleb);

}

void spinDisplay1(void) {

glutPostRedisplay(); }

void myReshape(int w, int h) {

glViewport(0, 0, w, h); //指定平面上一个矩形裁剪区域, glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h)

gluOrtho2D(-1.,1.,-1.*(GLfloat)h/(GLfloat)w,1.*(GLfloat)h/(GLfloat)w); else 1.);

}

void mouse(int button,int state,int x,int y) //鼠标定义 { switch(button) {case GLUT_LEFT_BUTTON:

if(state == GLUT_DOWN )

glutIdleFunc(spinDisplay1);

gluOrtho2D(-1.*(GLfloat)w/(GLfloat)h, 1.*(GLfloat)w/(GLfloat)h, -1.,

{ }

break; } }

void main(int argc, char** argv) //主函数 {

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); case GLUT_RIGHT_BUTTON: if(state == GLUT_DOWN) glutIdleFunc(spinDisplay); break; default: break;

华北电力大学 计算机图形学实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8p2gu5wmyf9acj29pw79_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top