Opengl实验报告及源代码实验二 几何图元绘制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:2018.11 实验成绩:
一、实验名称
实验二几何图元绘制
二、实验内容
1.利用OpenGL提供的基本工具函数刷新绘图窗口、指定绘图颜色、设置工作状态
等,实现OpenGL流水线状态的基本管理。
2.采用立即模式绘制OpenGL常用的几何图元:如点、线、三角形等,基于几何图
元绘制一些简单的几何图形。
三、实验目的
1.掌握OpenGL常用工具函数的功能及使用方法,了解立即模式下OpenGL流水线的
工作原理。
2.掌握点、线、三角形等基本几何图元的绘制和图元属性的设置方法,了解点的大
小,直线的宽度与模式,多边形的填充等图元属性的具体使用。
四、实验步骤
1.新建项目OPengl02,在项目下添加opengl0
2.cpp文件和glad.c文件;
2.在opengl02.cpp文件中,添加函数:
(1)绘制点
void renderPoint()
{
//点的绘制
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glPointSize(30);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_POINT_SMOOTH);
glBegin(GL_POINTS);
glVertex3f(0.5, 0.5, 0.0);
glVertex3f(-0.5, 0.5, 0.0);
glVertex3f(-0.5, -0.5, 0.0);
glVertex3f(0.5, -0.5, 0.0);
glEnd();
glFlush();
}
(2)绘制线
void renderLine()
{
//线的绘制
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glLineWidth(10);
glLineStipple(1, 0xFF00);
glEnable(GL_LINE_STIPPLE);
//glBegin(GL_LINES);
//glBegin(GL_LINE_STRIP);
glBegin(GL_LINE_LOOP);
glVertex3f(0.5, 0.5, 0.0);
glVertex3f(-0.5, 0.5, 0.0);
glVertex3f(-0.5, -0.5, 0.0);
glVertex3f(0.5, -0.5, 0.0);
glEnd();
glFlush();
}
(3)绘制三角形
//三角形的绘制
void renderTrangles()
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, 0.5, 0.0);
glVertex3f(-0.9, -0.5, 0.0);
glVertex3f(-0.1, -0.5, 0.0);
glVertex3f(0.4, 0.5, 0.0);
glVertex3f(-0.4, 0.5, 0.0);
glVertex3f(0.0, -0.5, 0.0);
glVertex3f(0.5, 0.5, 0.0);
glVertex3f(0.1, -0.5, 0.0);
glVertex3f(0.9, -0.5, 0.0);
glEnd();
glFlush();
}
(4)绘制圆
#include
#define PI 3.1415926535
GLint circle_points = 128;
//圆的逼近表示
void renderCircle()
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_LOOP);
for (int i = 0; i < circle_points; ++i) { float angle = (2 * PI / circle_points)*i;
glVertex2f(cos(angle), sin(angle));
}
glEnd();
glFlush();
}
(5)绘制多边形
//四边形的属性
void renderQads()
{