文章目录

  • 一、绘制 GL_POLYGON 模式多边形
  • 二、多边形绘制顺序分析
  • 三、相关资源

一、绘制 GL_POLYGON 模式多边形


使用 glBegin(GL_POLYGON) 设置绘制多边形 , 不管有几个点 , 都按照指定的顺序连接起来 ;

注意 : 这些点组成的多边形必须是凸多边形 , 不能是凹多边形 ;

代码示例 :

 // 只显示正面 , 不显示背面//glEnable(GL_CULL_FACE);// 设置顺时针方向 CW : Clock Wind 顺时针方向// 默认是 GL_CCW : Counter Clock Wind 逆时针方向 //glFrontFace(GL_CW);// 主消息循环:while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}// 渲染场景// 清除缓冲区 , // 使用之前设置的 glClearColor(1.0, 0.0, 0.0, 1.0) 擦除颜色缓冲区// 红色背景glClear(GL_COLOR_BUFFER_BIT);// 设置当前的绘制颜色 , 4 个 unsigned byte // 每个颜色的分量占一个字节// 参数数据是 R 红色 G 绿色 B 蓝色 A 透明度// 下面设置的含义是白色, 绘制点的时候, 每次都使用白色绘制glColor4ub(255, 255, 255, 255);// 设置线的宽度 glLineWidth(2.0f);//glBegin(GL_POINTS);    // 绘制点//glBegin(GL_LINES);  // 绘制线//glBegin(GL_LINE_STRIP);// 绘制前后连接的点组成的线//glBegin(GL_LINE_LOOP); // 绘制前后连接的点组成的线 , 并且收尾相连//glBegin(GL_TRIANGLES); // 绘制多个三角形//glBegin(GL_TRIANGLE_STRIP); // 绘制 GL_TRIANGLE_STRIP 三角形//glBegin(GL_TRIANGLE_FAN);  // 绘制三角形扇// 绘制多边形glBegin(GL_POLYGON);// 1. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 0.0f, -10.0f);// 2. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, 0.0f, -10.0f);// 3. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(-5.0f, -2.0f, -10.0f);// 4. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(0.0f, -2.0f, -10.0f);// 5. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 4.0f, -10.0f);// 6. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, 4.0f, -10.0f);// 绘制四边形结束glEnd();// 将后缓冲区绘制到前台SwapBuffers(dc);}

绘制效果 :

二、多边形绘制顺序分析


在 glBegin 和 glEnd 之间设置了 666 个点 , 分别在图中标号 , 绘制顺序按照 1→2→3→4→5→6→11 \to 2 \to 3 \to 4 \to 5 \to 6 \to 11→2→3→4→5→6→1 顺序连接起来 , 最终画出了如下多边形 ;

     // 绘制多边形glBegin(GL_POLYGON);// 1. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 0.0f, -10.0f);// 2. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, 0.0f, -10.0f);// 3. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(-5.0f, -2.0f, -10.0f);// 4. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(0.0f, -2.0f, -10.0f);// 5. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 4.0f, -10.0f);// 6. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, 4.0f, -10.0f);// 绘制四边形结束glEnd();

三、相关资源


GitHub 地址 : https://github.com/han1202012/OpenGL
( GitHub 源码始终都会随着后续博客的进度更新覆盖 , 可能没有本博客的相关源码 , 推荐下载博客源码快照 ) ;

博客源码快照 : https://download.csdn.net/download/han1202012/14880720
( 该源码是 Windows 桌面程序 , 使用 Visual Studio 2019 打开 )

【OpenGL】十八、OpenGL 绘制多边形 ( 绘制 GL_POLYGON 模式多边形 )相关推荐

  1. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  2. 设计模式十八:mediator(中介者模式)——对象行为型模式

    mediator(中介者模式)--对象行为型模式 1.意图 用一个中介对象来封装一系列的对象交互.中介者使不同对象不需要显式地相互引用,从而使其松散耦合,从而使得可以独立地改变他们之间的交互. 2.动 ...

  3. Go 开源说第十八期预告:基于 Reactor 模式开发网络服务——gnet

    点击蓝字 关注我们 写在前面 GoCN开源说是GoCN推出的一档分享Go开源好项目的直播栏目,通过开源说希望能够帮助到开源作者们实现以下目标: 第一是去推广他们的开源项目 第二说说背后的设计原理和理念 ...

  4. OpenGL(十八)——Qt OpenGL绘制一个3D世界

    OpenGL(十八)--Qt OpenGL绘制一个3D世界 一.说明 本篇介绍构建一个3D的世界. 二.简介 加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游. ...

  5. 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★

    文章目录 一.导入 OpenGL 的两个头文件 二.链接 OpenGL 库 三.将 Windows 桌面窗口改成 OpenGL 窗口 四.获取窗口设备 五.设置像素格式描述符 六.设置像素格式 七.创 ...

  6. opengl 多边形线框_opengl基础学习专题 (三) 多边形绘制的几种样式

    题外话 聪明人之所以不会成功,是由于他们缺乏坚韧的毅力. --艾萨克·牛顿(1643年1月4日-1727年3月31日)英国 也许可以理解为 想更深一步的时候,坚持,努力和聪明缺一不可. 挺直腰杆在此向 ...

  7. 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )

    文章目录 一.初始化 OpenGL 矩阵 1.设置投影矩阵 2.设置模型视图矩阵 二.绘制点 1.清除缓冲区 2.设置当前颜色值 3.设置绘制点的大小 4.绘制点 5.将缓冲区绘制到前台 三.部分代码 ...

  8. openGL下的”橡皮筋“技术(多边形绘制)

    要实现使用OpenGL的划线方法实现多变形的绘制,就要用到几个OpenGL的基本操作,使用glut库中的方法会更加简单. 几个变量: #define NUM 200 //折线的最大折线段 int Fl ...

  9. 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )

    文章目录 一.绘制 GL_TRIANGLE_STRIP 三角形 二.GL_TRIANGLE_STRIP 三角形绘制分析 三.相关资源 一.绘制 GL_TRIANGLE_STRIP 三角形 该模式绘制首 ...

最新文章

  1. 关于学习Python的一点学习总结(38)
  2. ubuntu 12.04下 eclipse的安装
  3. Linux内核判断大小端,linux kernel 如何处理大小端
  4. mysql 自身参照自身_mysql个人散乱笔记,慎重参考
  5. java launcher_JAR清单类路径不仅适用于Java Application Launcher
  6. 还不起9亿?有人建议为范冰冰发行一款私募ABS产品融资!
  7. 使用Java访问Mysql数据库时出现时区异常的解决方案
  8. android顶部标题app_name,如何写一个app通用的title
  9. Linux-安装python3环境
  10. 探讨【IGE】的源代码【一】。
  11. 「解决方案」运维、能耗、网关整体解决方案
  12. 关于timer产生的pwm寄存器arr,ccr,psc分析
  13. windows10开启与关闭休眠模式
  14. 牛客网C++开发面试经验汇总
  15. 李兴华课程 java学习笔记
  16. QT 多目录多工程 配置
  17. 关于出版《AR Foundation增强现实开发实战(ARKit版)》(2022-09-11创建)
  18. HTML+CSS+JavaScript实现全国三级城市select选择
  19. win8系统计算机打不开,Win8系统电脑总是打不开Metro界面怎么解决
  20. 最全Python xlwings升Excel生产力

热门文章

  1. waterfilling之二
  2. Google翻译问题之——Cloud Translation API has not been used in project x before or it is disabled.
  3. Android R config_biometric_sensors默认通用定制common可好?
  4. 加速乐的欢乐破解与__jsl_clearance的生成
  5. 加速乐jsl逆向-11题---有点特殊的jsl
  6. 1.初始Hadoop大数据技术
  7. 异丁酰氯(CAS 79-30-1)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 盘点系外行星中五大最有可能的宜居星球
  9. 在线教育退潮,教育硬件起浪:“老厂”造平板,“大厂”造台灯
  10. 19、会员中心 - 小程序端开发 - 微擎小程序模块应用开发