实验1 OpenGL中的二维编程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。试绘制一年内产量按月的折线图,柱状图和饼图(可用三角法画圆)。注意文本的位置。参考图示如下:
月份较多,画饼图的时候可以按照季度来统计产量: