配置好openGL的环境之后我们就可以进行简单的绘图工作了,我的第一个绘图任务是通过点之间的连线绘制带有特定对角线的正六边形。

前人工作

在绘制正六边形之前找了一些绘制线、多边形的教程,以及画正n边形的教程,列举如下:

  1. 绘制简单的点、线、面:https://blog.csdn.net/Nick_Wang94/article/details/51946702
  2. 通过圆切割的方式画正n边形:http://blog.sina.com.cn/s/blog_622bd1660100y0m7.html
  3. 通过多个三角形拼接画正n边形:https://blog.csdn.net/th_gsb/article/details/51140842

进入正题

由于我的任务是通过坐标点的连线来绘制正六边形,因此需要先确定好点的坐标。openGL默认的坐标边界为±1,即窗口的四个顶点为(-1,1),(1,1),(1,-1),(-1,-1)。因此需要根据这四个顶点再借助几何知识计算出正六边形所有顶点的坐标如下:

//6个点的坐标
glVertex2f(-0.2, -0.35);
glVertex2f(-0.4, 0.0);
glVertex2f(-0.2, 0.35);
glVertex2f(0.2, 0.35);
glVertex2f(0.4, 0.0);
glVertex2f(0.2, -0.35);

接下来,利用下面这个函数画多边形

glBegin(GL_POLYGON);

利用下面的这个函数画对角线即可

    glBegin(GL_LINES);

代码

#include <gl\glut.h>//画带对角线的正六边形void draw()
{glClearColor(0.0, 0.0, 0.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);//只画出边框,不填充内部//画正六边形glBegin(GL_POLYGON);glVertex2f(-0.2, -0.35); glVertex2f(-0.4, 0.0); glVertex2f(-0.2, 0.35);glVertex2f(0.2, 0.35);              glVertex2f(0.4, 0.0);glVertex2f(0.2, -0.35);glEnd();//画线glBegin(GL_LINES);glVertex2f(-0.2, -0.35);glVertex2f(0.2, 0.35);glVertex2f(-0.2, 0.35);glVertex2f(0.2, -0.35);glEnd();glFlush();
}void reshape(int x, int y)
{int dis = x > y ? y : x; //取小的glViewport(0, 0, dis, dis);
}void main()
{glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);glutInitWindowPosition(0, 0);glutInitWindowSize(500, 500);glutCreateWindow("绘制带对角线的正六边形");glutDisplayFunc(draw);glutReshapeFunc(reshape);glutMainLoop();
}

openGL入门(二)用openGL绘制带有对角线的正六边形相关推荐

  1. openGL入门(三)绘制带对角线的正六边形,并在各个顶点上标明字母

    在上篇文章的基础上,本篇文章介绍如何继续在多边形的各个顶点加上字母.openGL本身不带有绘制字母的函数,是通过glutBitmapCharacter(font , character)绘制位图的算法 ...

  2. OpenGL入门二——变换

    OpenGL入门二--变换 一.预备知识 二.实现 三.控制 四.预览与源码 一.预备知识 齐次坐标:https://blog.csdn.net/zhanxi1992/article/details/ ...

  3. OpenGL入门学习 课程 (三) 绘制几何图形的一些细节问题

    http://oulehui.blog.163.com/blog/static/79614698201191832753312/ 先回顾一下我们都学习了些什么: 第一课,编写第一个OpenGL程序 第 ...

  4. 高德地图和百度地图接口封装遇到的问题(二):绘制带有方向箭头的折线

    临时接到一个小任务,要封装一个绘制带有方向箭头的折线的功能接口,就下面这种样式: 百度地图给的示例是这样的: var sy = new BMap.Symbol(BMap_Symbol_SHAPE_BA ...

  5. turtle绘制图形--正方形、正六边形、叠边形

    1.正方形的绘制 正方形如下图所示 思路分析:首先得知道正方形的特点,画一个正方形可从起点绕一圈回到起点,外角和为360°:有4条边,那么外角为360°÷4=90°.所以每次转角都为90°.知道了正方 ...

  6. OpenGL入门程序一:绘制简单的矩形

    #include <GL/glut.h>void MyDisplay(void);int main(int argc, char **argv) {//设置窗口的大小glutInitWin ...

  7. OpenGL入门示例3——黑色背景绘制绿色圆形

    #include<GL/glut.h> //GLUT是OpenGL实用工具包,自动包含了<GL/gl.h>和<GL/glu.h>,编程时不必再次包含它们. #inc ...

  8. [WebGL入门]二十,绘制立体模型(圆环体)

    注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指 ...

  9. OpenGL入门北斗星点绘制

    ** OpenGL入门–北斗星点的绘制 C++代码 唯一遇到的问题就是glFlush()这个函数的问题 #include <GL/glut.h> #include<gl/GLU.h& ...

最新文章

  1. 【转录组】如何进行序列比对?
  2. 一文概述 2018 年深度学习 NLP 十大创新思路
  3. Volley框架学习
  4. TaskTracker获取并执行map或reduce任务的过程(一)
  5. js 原型prototype继承模式
  6. 内存管理(ybtoj-二叉堆)
  7. 吉比特java开发_JVM 吉比特后台 Java 开发实习生 20 分钟一轮游 _好机友
  8. 基于NPOI的报表引擎——ExcelReport
  9. 一天搞定DXUT三步曲之一:DXUT框架
  10. vivado2018.3添加IP库
  11. 处理手机上点击链接出现的蓝色边框
  12. vim个性化设置---给脚本文件加注释头信息
  13. Solidity 教程
  14. B2B电子邮件营销:下一个突破口在哪?
  15. [渝粤教育] 岭南师范学院 文学创意写作 参考 资料
  16. OpenWRT下使用dnspod解析动态域名
  17. 5年从点点点到测开,写给即将进入或者正在做测试的你...
  18. 五子棋的实现 Java课程设计
  19. 世界杯2022赛程表
  20. 洛谷 P2141 珠心算测验

热门文章

  1. Bilateral Multi-Perspective Matching for Natural Language Sentences---读书笔记
  2. 【编程题】【Scratch四级】2019.12 抽奖
  3. 每日一词20190316——GIS矢量数据和栅格数据对比
  4. 哈利波特魔法觉醒火盾护身卡组推荐 火盾护身如何搭配
  5. 联想小新pro16和thinkbook16p nx选哪个好
  6. 【小5聊】腾讯位置服务之小程序简单使用以及显示附近WC步行路线
  7. java实现图灵机器人的接入_调用图灵机器人API实现聊天机器人
  8. 苹果公布 2022 Apple 设计大奖入围作品
  9. mui.fire运用
  10. 狗狗最近不爱吃饭了,还好有办法应对