计算机图形学实验报告
计算机图形学实验报告是对计算机图形学的实验报告,主要介绍了 OpenGL 编程与图形绘制的实验内容。本实验报告的目的是了解 OpenGL 编程,并熟悉 OpenGL 的主要功能、绘制流程和基本语法。通过本次实验,了解了 OpenGL 的主要功能、绘制流程和基本语法,并配置了OpenGL 环境,在该环境中编程绘制图形。
一、实验目的
了解 OpenGL 编程,并熟悉 OpenGL 的主要功能、绘制流程和基本语法。学会配置 OpenGL 环境,并在该环境中编程绘图。
二、实验内容
OpenGL 的主要功能包括:
* 模型绘制
* 模型观察
* 颜色模式
* 光照应用
* 图像效果增强
* 位图和图像处理
* 纹理映射
* 实时动画和交互技术
OpenGL 的绘制流程分为两个方面:一个完整的窗口系统的 OpenGL 图形处理系统的结构为:
* 图形硬件
* 操作系统
* 窗口系统
* OpenGL
* 应用软件
OpenGL 命令将被放在一个命令缓冲区中,这样命令缓衝区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。
三、实验代码及结果
3.1 点的绘制
```c
#include<gl/glut.h>
void Initial(void){
glClearColor(1.0f,1.0f,1.0f,1.0f); //设置窗口背景颜色为白色
glMatrixMode(GL_PROJECTION); //指定设置投影参数
gluOrtho2D(0.0,200.0,0.0,150.0); //设置投影参数
}
void Display(void){
glClear(GL_COLOR_BUFFER_BIT); //用当前背景颜色填充窗口
glColor3f(1.0f,0.0f,0.0f); //设置当前的绘图颜色为红
// glRectf(50.0f,100.0f,150.0f,50.0f); //绘制一个矩形
glPointSize(10); //三个点
glBegin(GL_POINTS);
glColor3f(1.0f,0.0f,0.0f);
glVertex2i(2,148);
glVertex2i(100,75);
glVertex2i(198,2);
glEnd();
glFlush(); //清空 OpenGL 命令缓衝区,执行 OpenGL 程序
}
int main(int argc,char*argv[]){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //初始化窗口的显示模式
glutInitWindowSize(400,300); //设置窗口的尺寸
glutInitWindowPosition(100,120); //设置窗口位置
glutCreateWindow("矩形"); //创建一个名为矩形的窗口
glutDisplayFunc(Display); //设置当前窗口的显示回调函数
Initial(); //完成窗口初始化
glutMainLoop(); //完成窗口 GLUT 事件处理循环
return 0;
}
```
运行结果:
3.2 直线的绘制
```c
#include<gl/glut.h>
void Initial(void){
glClearColor(1.0f,1.0f,1.0f,1.0f); //设置窗口背景颜色为白色
glMatrixMode(GL_PROJECTION); //指定设置投影参数
gluOrtho2D(0.0,200.0,0.0,150.0); //设置投影参数
}
void Display(void){
glClear(GL_COLOR_BUFFER_BIT); //用当前背景颜色填充窗口
glColor3f(1.0f,0.0f,0.0f); //设置当前的绘图颜色为红
glBegin(GL_LINES);
glVertex2i(50,50);
glVertex2i(150,150);
glEnd();
glFlush(); //清空 OpenGL 命令缓衝区,执行 OpenGL 程序
}
int main(int argc,char*argv[]){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //初始化窗口的显示模式
glutInitWindowSize(400,300); //设置窗口的尺寸
glutInitWindowPosition(100,120); //设置窗口位置
glutCreateWindow("直线"); //创建一个名为直线的窗口
glutDisplayFunc(Display); //设置当前窗口的显示回调函数
Initial(); //完成窗口初始化
glutMainLoop(); //完成窗口 GLUT 事件处理循环
return 0;
}
```
本次实验主要是对点的绘制、直线的绘制和多边形面的绘制,并了解了 OpenGL 的主要功能、绘制流程和基本语法。
评论0
最新资源