实验1 OpenGL中的二维编程

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

实验1 OpenGL中的二维编程

【实验目的】

1.掌握基本的openGL编程方法。

2.掌握二维图形的显示方法。

【实验题目】

1. 练习基本的openGL编程方法。

(1)配置openGL,能在VC下通过编译。

(2)阅读并运行simple.c,熟悉最简单的openGL程序结构。

(3)阅读并运行改进的simple2.c,掌握openGL程序的通用结构。给simple2.c 中的函数加注释。

可尝试做如下修改:

(a)改变窗口的位置,尺寸,标题;

(b)改变窗口背景色和矩形颜色;

(c)改变矩形的尺寸和其在窗口中的位置,还可以只显示矩形的一部分(通过设置正投影参数(glOrtho函数的参数)和矩形四个顶点的坐标来完成);

2. 发挥想象,编程实现在窗口中绘制若干图形及设置它们的属性,并回答问题:(1)绘制若干个点,分别设置每个点的颜色和大小。

思考题1:glPointSize()可以放在glBegin()和glEnd()函数对之间吗?

(2)绘制若干条直线段。设置线段的颜色,线型和线宽。

思考题1:以下命令会显示什么样的线段?

glEnable(GL_LINE_STIPPLE);

glColor3f(0.0, 1.0, 0.0);

glLineWidth(2.0);

glLineStipple(3, 0xcccc);

glDisable(GL_LINE_STIPPLE);

思考题2:以下命令会显示什么样的线段?

glShadeModel(GL_SMOOTH);

glBegin(GL_LINES);

glColor3f(1.0, 0.0, 0.0);

glVertex2f(0.0, 0.5);

glColor3f(0.0, 0.0, 1.0);

glVertex2f(0.5, -0.5);

glEnd();

将glShadeModel(GL_SMOOTH)改为glShadeModel(GL_FLAT),其余命令不变,结果又会如何?

(3)绘制若干个多边形。设置多边形的颜色,显示模式,隐藏某些边。

思考题1:以下命令会显示什么样的多边形?

glShadeModel(GL_SMOOTH);

glBegin(GL_POLYGON);

glColor3f(1.0, 0.0, 0.0);

glVertex2f(-0.5, -0.5);

glColor3f(0.0, 1.0, 0.0);

glVertex2f(-0.5, 0.5);

glColor3f(0.0, 0.0, 1.0);

glVertex2f(0.5, 0.5);

glColor3f(1.0, 1.0, 0.0);

glVertex2f(0.5, -0.5);

glEnd();

将glShadeModel(GL_SMOOTH)改为glShadeModel(GL_FLAT),其余命令不变,结果又会如何?

将glBegin(GL_POLYGON)改为glBegin(GL_QUADS),分别尝试在SMOOTH和FLAT 模式下的结果。

思考题2:以下程序段分别会显示什么样的多边形?

(a)

glPolygonMode( GL_FRONT_AND_BACK, GL_FILL);

glColor3f(1.0, 0.0, 0.0);

glBegin(GL_POLYGON);

glVertex2f(-0.5, -0.5);

glVertex2f(-0.5, 0.5);

glVertex2f(0.5, 0.5);

glVertex2f(0.5, -0.5);

glEnd();

(b)

glPolygonMode( GL_FRONT_AND_BACK, GL_LINE);

glColor3f(1.0, 1.0, 0.0);

glBegin(GL_POLYGON);

glVertex2f(-0.5, -0.5);

glVertex2f(-0.5, 0.5);

glVertex2f(0.5, 0.5);

glVertex2f(0.5, -0.5);

glEnd();

(c)

glPolygonMode( GL_FRONT_AND_BACK, GL_POINT);

glColor3f(1.0, 1.0, 0.0);

glBegin(GL_POLYGON);

glVertex2f(-0.5, -0.5);

glVertex2f(-0.5, 0.5);

glVertex2f(0.5, 0.5);

glVertex2f(0.5, -0.5);

glEnd();

思考题3:下面多边形的哪些边不可见?

glPolygonMode( GL_FRONT_AND_BACK, GL_LINE);

glColor3f(1.0, 1.0, 0.0);

glBegin(GL_POLYGON);

glVertex2f(-0.5, -0.5);

glEdgeFlag(GL_FALSE);

glVertex2f(-0.5, 0.5);

glEdgeFlag(GL_TRUE);

glVertex2f(0.5, 0.5);

glVertex2f(0.5, -0.5);

glEnd();

3.学会查文档,自学。

4公司某年度各月产量分别为:320,475,436,754,585,619,788,500,860,1000,800,930。试绘制一年内产量按月的折线图,柱状图和饼图(可用三角法画圆)。注意文本的位置。参考图示如下:

月份较多,画饼图的时候可以按照季度来统计产量:

相关文档
最新文档