计算机图形学实验指导

点赞:5445 浏览:20489 近期更新时间:2024-03-19 作者:网友分享原创网站原创

计算机图形学实验指导(一)–OpenGL基础

1.综述

这次试验的目的主要是使大家初步熟悉OpenGL这一图形系统的用法,编程平台是VisualC++,它对OpenGL提供了完备的支持.

尽管OpenGL包括渲染命令,但却独立于任何窗口系统和操作系统.因此,OpenGL并不包括用来打开窗口以及从键盘或鼠标读取事件的命令.在这里,我们应用GLUT库简化Windows窗口操作.

2.准备GLUT库

下载glut压缩包后,解压,把glut32.dll放在Windows的system32目录下,将glut32.lib放在C:\programfiles\MicrosoftVisualStudio\VC98\Lib目录中,将glut.h放在C:\programfiles\MicrosoftVisualStudio\VC98\Include\GL目录中

2.在VC中新建项目

新建一个项目.

选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32ConsoleApplication项,然后填入你自己的Projectname,回车即可.VC为你创建一个工作区(WorkSpace),你的项目就放在这个工作区里.

为项目添加文件

为了使用OpenGL,我们需要在项目中加入相关的Lib文件:glut32.lib

选中菜单Project->,Settings项,在link选项卡中的Object/Librarymodules栏中加入glut32.lib.

选择菜单File中的New选项,弹出一个分页的对话框,选中页Files中的C++sourcefile,填入文件名,钩选添加到刚才建的那个工程里,然后就可以开始编程了.

3.一个OpenGL的例子

#include<,GL/glut.h>,

//初始化OpenGL

voidinit(void)

{

glClearColor(0.0f,0.0f,0.0f,0.0f),//设置背景颜色

glShadeModel(GL_FLAT),//设置明暗处理

}

//主要的绘制过程

voiddisplay(void)

{

glClear(GL_COLOR_BUFFER_BIT),//清除颜色缓存

glBegin(GL_LINES),//开始画直线

glColor3f(1.0f,1.0f,1.0f),//设置颜色为白色

glVertex2f(30.0f,30.0f),//第一根线的两个端点

glVertex2f(200.0f,400.0f),

glColor3f(1.0f,0.0f,0.0f),//设置第二根线的颜色为红色

glVertex2f(25.0f,350.0f),//第二根线的两个端点

glVertex2f(250.0f,50.0f),

glEnd(),//画线结束

glBegin(GL_TRIANGLES),//开始画三角形,注意,没有设颜色,所以还是红色

glVertex2f(400.0f,100.0f),//三角形的三个顶点

glVertex2f(600.0f,100.0f),

glVertex2f(500.0f,300.0f),

glEnd(),//结束画三角形

glFlush(),//开始绘制

}

//在窗口改变大小时调用

voidreshape(intwidth,intheight)

计算机图形学实验指导参考属性评定
有关论文范文主题研究: 关于操作系统的论文范文 大学生适用: 自考论文、学院论文
相关参考文献下载数量: 25 写作解决问题: 怎么撰写
毕业论文开题报告: 论文任务书、论文摘要 职称论文适用: 期刊发表、中级职称
所属大学生专业类别: 怎么撰写 论文题目推荐度: 经典题目

{

glViewport(0,0,width,height),//设置视口

glMatrixMode(GL_PROJECTION),//设置当前为投影变换模式

glLoadIdentity(),//用单位矩阵替换当前变换矩阵

gluOrtho2D(0.0,width,0.0,height),//设置正交投影视图体

}

//处理键盘

voidkeyboard(unsignedcharkey,intx,inty)

{

switch(key)

{

case27://esc键退出

exit(0),

break,

default:

break,

}

}

intmain(intargc,char**ar)

{

glutInit(&,argc,ar),//初始化glut

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB),//设置为单缓存,RGB模式

glutInitWindowSize(640,480),//设置窗口大小

glutInitWindowPosition(0,0),//设置窗口起始位置

glutCreateWindow("Basic"),//设置窗口标题

init(),//初始化OpenGL

glutDisplayFunc(display),//设置显示回调函数

glutReshapeFunc(reshape),//设置reshape回调函数

glutKeyboardFunc(keyboard),//设置键盘回调函数

glutMainLoop(),//进入主循环

return0,

}

程序说明:

每个函数的具体含义在程序注释中已作了叙述,不再多说.

OpenGL的函数在格式上很有特点,它以gl为前缀,并且函数名的最后一个字母指出所用的数据类型,如:glColor3f(),字母f指明要使用浮点数.字母前的数字指明参数个数或指明二维还是三维,如:glVertex2f()是要设置二维的点.

OpenGL采用的是状态机的方式,用户设定一种状态,程序照此运行.如:glBegin(GL_LINES)设定画线状态(GL_LINES是OpenGL已定义好的常量),glColor3f()设定绘图所用颜色.

main()函数中的几个glut前缀函数是glut库函数,用以初始化窗口,大家不必深究,我们关注的是display()函数,它是我们真正绘图的地方.

函数glColor3f()以RGB方式设置颜色,格式为:glColor3f(red,green,blue),每种颜色值在(0.0,1.0)之间.

函数glVertex2f(x,y)设置二维顶点.

函数glBegin(UINTState),glEnd()是最基本的作图函数,下面对它作一介绍.

如上所述,OpenGL是一个状态机,glBegin(UINTState)可以设定如下状态:

GL_POINTS画点

GL_LINES画线,每两个顶点(Vertex)为一组

GL_LINE_STRIP画线,把若干个顶点顺次连成折线

GL_LINE_LOOP画线,把若干个顶点顺次连成封闭折线


GL_TRIANGLES画三角形,每三个顶点为一组

GL_QUADS画四边形,每四个顶点为一组

GL_POLYGON画多边形

还有GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN,GL_QUADS_STRIP等等.大家可以把每一种状态都试一试.

程序可以有多组glBegin(),glEnd()并列的形式,如:

......

glBeing(GL_LINES),

......

glEnd(),

glBeing(GL_QUADS),

......

glEnd(),

......

除了上述的基本图元外,函数glRectf(x1,y1,x2,y2)可以画一个矩形,但这个函数不能放在glBegin()和glEnd()之间,下面的两句程序是画一个蓝色的矩形.

glColor3f(0.0f,0.0f,1.0f),

glRectf(10.0f,10.0f,50.0f,50.0f),