计算机图形学上机实验报告讲述
计算机图形学实验报告姓名:学号:班级:实验一OpenGL程序结构练习【实验目的】熟悉C语言环境下OpenGL的使用方法;了解OpenGL程序的基本结构。【实验原理】绝大多数OpenGL程序具有类似的结构,包含下述函数main():定义回调函数,打开一个或多个具有指定属性的窗口,进入事件循环(最后一条可执行语句)init():设置状态变量、视图、属性、回调、显示函数、输入和窗口函数#include // glut.h includes gl.h and glu.hvoid display() { …… } void init(){ ……} int main( intargc, char **argv){ …… }【实验内容】1.了解程序中各个结构的功能;2.用OpenGL生成三角形。【实验步骤及结果】1.导入OpenGL的glut32.lib和glut.h文件:将.lib文件存放到C语言程序文件夹的Library下,.h文件放到Include下;导入应用程序扩展文件glut32.dll,存放到system文件夹下。2.打开VC 6.0,新建工程,并命名为text1,如图1.图 13.在工程text1下新建源文件,并命名为text1.cpp。4.编写代码并编译链接,如图2所示。图 25.运行,结果如图3所示。图 3实验二基本图形生成【实验目的】1.熟悉OpenGL的程序结构,并了解各部分的功能。2.学会应用OpenGL语言绘制出点,线,多边形。【实验原理】1.GLUT函数glutInit使得应用程序可以获取命令行参数并初始化系统。glutInitDisplayMode设置窗口的属性、RGB颜色、单缓冲区、属性按照逻辑或组合在一起。glutWindowSize以像素为单位定义窗口的尺寸。glutWindowPosition定义窗口左上角在显示器上的位置。glutCreateWindow创建窗口,标题来自于参数值。glutDisplayFunc定义显示回调函数。glutMainLoop进入无穷的事件循环。2.变换与视图在OpenGL中投影是利用投影矩阵乘法(变换)进行的,由于只存在一个变换函数系列,因此必须先设置矩阵模式。glMatrixMode(GL_PROJECTION)变换函数是累加在一起的,因此需要从单位阵开始,然后把它改变为一个投影矩阵以定义视景体。3.OpenGL的基本几何形状在display模块下采用glBegin()调用,如:glBegin(GL_POLYGON)既是调用多边形绘制方式。4.颜色与状态颜色的每个分量在帧缓冲区中是分开存贮的,在缓冲区中通常每个分量占用8位字节。注意在函数glColor3f中颜色的变化范围是从0.0(无)1.0(全部), 而在glColor3ub中颜色值的变化范围是从0到255。在OpenGL程序中,由glColor*设置的颜色成为状态的一部分,后续构造过程将使用这一颜色,直至它被修改为止。颜色与其它属性不是对象的一部分,但是在渲染对象时,要把这些属性赋给对象,可以按下述过程创建具有不同颜色的顶点glColor()glVertex()glColor()glVertex()【实验内容】1.用OpenGL生成点、线。2.用OpenGL生成多边形。【实验步骤及结果】1.打开VC 6.0,新建名为text2的工程文件,并新建名为text2.cpp的源文件。2.编写代码,编译并链接,如图1所示。图 13.运行,结果如图2所示。图 2实验三交互式控制【实验目的】1. 了解OpenGL中交互式控制的原理。2.学会运用OpenGL程序实现鼠标和键盘对图形及窗口的控制。【实验原理】1.GLUT中的回调函数GLU识别在各种窗口系统(Windows, X, Macintosh)中都有的一组事件:glutDisplayFunc //显示功能glutMouseFunc //鼠标功能glutReshapeFunc //重置形状功能glutKeyboardFunc //键盘功能glutIdleFunc //闲置停顿功能glutMotionFunc //动作请求功能glutPassiveMotionFunc //被动请求功能2.鼠标回调函数glutMouseFunc(mymouse) voidmymouse(GLintbtn, GLint state, GLint x, GLint y) 其中btn的值可能是GLUT_LEFT_BUTTON、GLUT_MIDDLE_BUTTON、 GLUT_RIGHT_BUTTON,表示哪个按钮导致了事件发生;state表示相应按钮的状态: GL_UP, GL_DOWN ;x, y表示在窗口中的位置。3.键盘的应用glutKeyboar