Opengl实验报告及源代码实验二 几何图元绘制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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()

{

相关文档
最新文档