OpenGL基础图形的绘制
例一:绘制五角星
设五角星5个顶点分别为ABCDE,顶点到坐标轴原点距离为r,ABCDE各点用r表示,分别为
A(0,r);
B(-r*sin(2/5*Pi),r*cos(2/5*Pi));
C(-r*sin(Pi/5),-r*cos(Pi/5));
DE和CB关于Y轴对称。

确定5个顶点的坐标后,使用GL_LINE_LOOP函数,将5个点连接起来,顺序依次为ACEBD。
主要代码为:
void Star(void)
{ GLfloat r = 0.8f;
GLfloat PointA[] = { , r };
GLfloat PointB[] = { -r*sin(0.4*Pi), r*cos(0.4*Pi) };
GLfloat PointC[] = { -r*sin(Pi / ), -r*cos(Pi / ) };
GLfloat PointD[] = { r*sin(Pi / ), -r*cos(Pi / ) };
GLfloat PointE[] = { r*sin(0.4*Pi), r*cos(0.4*Pi) }; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_LOOP);
glVertex2fv(PointA);
glVertex2fv(PointC);
glVertex2fv(PointE);
glVertex2fv(PointB);
glVertex2fv(PointD); glEnd(); glFinish();
}
绘制成果如下:

例二:正弦函数绘制
先用GL_LINES,4个坐标点,将坐标轴绘制出来,再绘制出正弦函数。
void Sin(void)
{ const float x = 0.1f;//默认坐标值从—1到1,,所以为了绘制完全,设定一个缩放的因子x
glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES);
glVertex2f(, -1.0f);
glVertex2f(, 1.0f);
glVertex2f(1.0f, );
glVertex2f(-1.0f, ); //glEnd; glBegin(GL_LINE_STRIP);
for(float i = -; i < ; i+= 0.01 ){
glVertex2f(i*x,0.5*sin(i));
} glEnd(); glFinish();
}

补充:
点的大小,线的粗细,实线虚线。
glPointSize(),和glLineWidth(),默认都为1个像素,可以设置点的大小,和线的粗细,(注:需在glBegin前设置好)
glEnable(GL_LINE_STIPPLE);//启用虚线
glDisable(GL_LINE_STIPPLE);//关闭虚线
glLineStipple(GLint factor, GLushort pattern);
pattern是由1和0组成的长度为16的序列,从最低位开始看,如果为1,则直线上接下来应该画的factor个点将被画为实的;如果为0,则直线上接下来应该画的factor个点将被画为虚的。
OpenGL基础图形的绘制的更多相关文章
- OpenGL基础图形编程
一.OpenGL与3D图形世界1.1.OpenGL使人们进入三维图形世界 我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体.我们又生活在一个充 ...
- 【转】OpenGL基础图形编程(一)
原文:http://blog.chinaunix.net/uid-20638550-id-1909183.html 分类: 一.OpenGL与3D图形世界 1.1.OpenGL使人们进入三维图形世界 ...
- 【转】OpenGL基础图形编程(二)
原文:http://blog.chinaunix.net/uid-20638550-id-1909184.html 分类: 十一.位图与图像 11.1.位图 11.1.1 位图(Bitmap)与字符 ...
- OpenGL基础图形编程(八)变换
八.OpenGL变换 OpenGL变换是本篇的重点内容,它包含计算机图形学中最主要的三维变换,即几何变换.投影变换.裁剪变换.视口变换,以及针对OpenGL的特殊变换概念理解和使用方法,如相机模拟.矩 ...
- MFC+OpenGL基础绘制<转>
转载地址:https://blog.csdn.net/u013232740/article/details/47904115 ------------------------------------- ...
- SVG.js 基础图形绘制整理(二)
一.折线 var draw = SVG('svg1').size(300, 300); //画折线 //使用字符串点 // var polyline=draw.polyline('0,0 100,50 ...
- 2019-10-23-C#-从零开始写-SharpDx-应用-绘制基础图形
title author date CreateTime categories C# 从零开始写 SharpDx 应用 绘制基础图形 lindexi 2019-10-23 21:16:35 +0800 ...
- C# 从零开始写 SharpDx 应用 绘制基础图形
本文告诉大家通过 SharpDx 画出简单的 2D 界面 本文属于 SharpDx 系列 博客,建议从头开始读 本文分为两步,第一步是初始化,第二步才是画界面 初始化 先创建 RenderForm 用 ...
- opengl基础学习专题 (二) 点直线和多边形
题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...
随机推荐
- JavaWeb学习笔记——DOM4J
下载的地址为:http://www.dom4j.org/dom4j-1.6.1/ import java.io.File; import java.io.FileOutputStream; impor ...
- Windows 让cmd启动的程序在后台运行
在Linux下要使程序后台运行,可通过 java -jar Client.jar & 来实现 在Windows下,则通过 start /b java -jar Client.jar 来 ...
- PHP ob系列函数详解
一. 相关函数简介: 1.Flush:刷新缓冲区的内容,输出. 函数格式:flush() 说明:这个函数经常使用,效率很高. 2.ob_start :打开输出缓冲区 函数 ...
- Deep Learning in a Nutshell: History and Training
Deep Learning in a Nutshell: History and Training This series of blog posts aims to provide an intui ...
- Redis总结(三)Redis 的主从复制
接着上一篇,前面两篇我总结了<Redis总结(一)Redis安装>和<Redis总结(二)C#中如何使用redis> 所以这一篇,会讲讲Redis 的主从复制以及C#中如何调用 ...
- Python 文件读写,条件循环(三次登录锁定账号实例)
通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能 需求一 """需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账 ...
- 将excel文件中的数据导入到mysql
·在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下: 1)增加一列(假设是D列) 2)在第一行的D列,就是D1中输入公式:=CONCATE ...
- mybatis map foreach遍历
mybatis map foreach遍历 转至http://www.cnblogs.com/yg_zhang/p/4314602.html mybatis 遍历map实例 map 数据如下 Map& ...
- Centos安装Kafka集群
kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目.在它的主页描述kafka为一个高吞吐量的分布式(能 将消息分散到不同的节点上)MQ.在这片博文中,作者简单 ...
- jquery自定义函数的多种方法
在jquery中自定义函数你会吗?今天抽时间写了几个,个人感觉还不错,喜欢的朋友可以了解下 复制代码 代码如下: //方法定义 $.windowbox = { //定义一个方法aa aa: fun ...