例一:绘制五角星

设五角星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基础图形的绘制的更多相关文章

  1. OpenGL基础图形编程

    一.OpenGL与3D图形世界1.1.OpenGL使人们进入三维图形世界 我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体.我们又生活在一个充 ...

  2. 【转】OpenGL基础图形编程(一)

    原文:http://blog.chinaunix.net/uid-20638550-id-1909183.html  分类: 一.OpenGL与3D图形世界 1.1.OpenGL使人们进入三维图形世界 ...

  3. 【转】OpenGL基础图形编程(二)

    原文:http://blog.chinaunix.net/uid-20638550-id-1909184.html  分类: 十一.位图与图像 11.1.位图 11.1.1 位图(Bitmap)与字符 ...

  4. OpenGL基础图形编程(八)变换

    八.OpenGL变换 OpenGL变换是本篇的重点内容,它包含计算机图形学中最主要的三维变换,即几何变换.投影变换.裁剪变换.视口变换,以及针对OpenGL的特殊变换概念理解和使用方法,如相机模拟.矩 ...

  5. MFC+OpenGL基础绘制<转>

    转载地址:https://blog.csdn.net/u013232740/article/details/47904115 ------------------------------------- ...

  6. SVG.js 基础图形绘制整理(二)

    一.折线 var draw = SVG('svg1').size(300, 300); //画折线 //使用字符串点 // var polyline=draw.polyline('0,0 100,50 ...

  7. 2019-10-23-C#-从零开始写-SharpDx-应用-绘制基础图形

    title author date CreateTime categories C# 从零开始写 SharpDx 应用 绘制基础图形 lindexi 2019-10-23 21:16:35 +0800 ...

  8. C# 从零开始写 SharpDx 应用 绘制基础图形

    本文告诉大家通过 SharpDx 画出简单的 2D 界面 本文属于 SharpDx 系列 博客,建议从头开始读 本文分为两步,第一步是初始化,第二步才是画界面 初始化 先创建 RenderForm 用 ...

  9. opengl基础学习专题 (二) 点直线和多边形

    题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...

随机推荐

  1. _mkdir

    [内容摘要]: C语言 在VS2013环境下使用_mkdir返回值是-,而且文件夹不存在,#include stdio.h#include direct.hmain(){)printf("无 ...

  2. easyUI layout 中使用tabs+iframe解决请求两次方法

    demo中的事例在加载tab页面时是 function createFrame(url) { var s = '<iframe name="iframepanel" scro ...

  3. CSS学习笔记——响应式布局

    响应式布局 响应式布局是现在很流行的一个设计理念,随着移动互联网的盛行,为解决如今各式各样的浏览器分辨率以及不同移动设备的显示效果,设计师提出了响应式布局的设计方案.所谓的响应式布局,就是一个网站能够 ...

  4. Shared Library Search Paths

    在使用CodeLite编译动态库的时候,可以通过在Linker > Linker Options中添加: -install_name @executable_path/libXXX.so 的方式 ...

  5. Thrift 的原理和使用

    thrift 的原理和使用 Thrift 架构 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目.Thrift通过IDL(Interf ...

  6. QT笔记

    1.菜单栏上的弹出窗口 void MainWindow::on_new_action_triggered() {     MyDialog myDialog;//MyDialog是一个ui     m ...

  7. SQL查询表字段的信息

    如题,代码: select * from information_schema.columns where table_name = 'TableName'

  8. Android Studio-设置鼠标悬停显示方法声明

  9. c语言中time相关函数

    工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ...

  10. 使用pygal 做chart图的经验分享

    看到小芮介绍了pygal文章后, http://rfyiamcool.blog.51cto.com/1030776/1378400, 我一直搞数据工作, 所以对于这种数据的展现很有兴趣. 做了点研究, ...