openGL中绘制矩形不能按顺时针或者逆时针次序定义矩形的4个顶点,需要安装正Z字形或者反Z字形的次序定义4个顶点才可以。

    // 定义顶点数据(左上开始的顺时针顶点次序)float vertices0[] = {-0.5f,  0.5f, 1.0, //1左上0.5f,  0.5f, 1.0, //2右上0.5f, -0.5f, 1.0, //3右下-0.5f, -0.5f, 1.0, //4左下};//绘制矩形glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//绘制矩形glDrawArrays(GL_LINE_STRIP, 0, 4);

这组顶点数据通过glDrawArrays绘制的效果如下:

因为使用GL_TRIANGLE_STRIP参数,前三个顶点按照顶点顺序绘制出上面的三角形(v0,v1,v2),第二个三角形由前面已经出现过的两个顶点和新增加的顶点v3构成,即v1,v2,v3,但是绘制的时候要遵循GL_TRIANGLE_STRIP顶点绘制的特点:如果新增顶点是奇数:组成三角形的顶点排列顺序:T = [n-1 n-2 n],如果新增顶点是偶数:组成三角形的顶点排列顺序:T = [n-2 n-1 n]
所以第二个三角形绘制的顶点组合是:(v2,v1,v3),所以这组顶点的定义,没法绘制封闭的矩形。

按顶点次序画线就是下面的样子:

修改为下面的定义顺序就能绘制出矩形了:

    // 定义顶点数据(正Z字形)float vertices1[] = {-0.5f,  0.5f, 1.0, //1左上 0.5f,  0.5f, 1.0, //2右上-0.5f, -0.5f, 1.0, //4左下0.5f, -0.5f, 1.0, //3右下};//绘制矩形glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//绘制矩形glDrawArrays(GL_LINE_STRIP, 0, 4);

顶点按次序连接起来就是个从左到右写的Z字形:

反过来也是可以的:

    // 定义顶点数据(反Z字形)float vertices2[] = {0.5f,  0.5f, 1.0, //2右上-0.5f,  0.5f, 1.0, //1左上 0.5f, -0.5f, 1.0, //3右下-0.5f, -0.5f, 1.0, //4左下};//绘制矩形glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//绘制矩形glDrawArrays(GL_LINE_STRIP, 0, 4);    

画出来就是反Z字形的连线:

前面vertices1和vertices2的定义都能画出矩形:

openGL绘制矩形的顶点定义与矩形绘制相关推荐

  1. python判断点在矩形内_定义一个矩形和点的位置,判断点是否在矩形里面

    25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width:矩形的高height. 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和h ...

  2. 【OpenCV3】旋转矩形(cv::RotateRect)的绘制

    在OpenCV3中的绘图详解中,我们详细地介绍了opencv3中所支持的各种几何形状的绘制,其中矩形的绘制接口为cv::rectangle(),但是这个接口只能用于绘制正常矩形(即cv::Rect定义 ...

  3. opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形

    一.简介 二.外接矩形的查找绘制 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 void main() 4 { 5 ...

  4. 安卓自定义View基础05-Canvas之基础图形绘制,点,线,矩形,圆,椭圆,弧形等

    一.Canvas简介 Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础, 源码中关于Canvas的解释: The Canvas class holds the &q ...

  5. SVG、canvas、绘制线段和填充多边形、矩形、曲线的绘制和填充

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 1.了解网页中的两个绘图技术 (1)SVG (2)canvas (3)画布的尺寸和坐标 2.绘制线段和填充多 ...

  6. 使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字

    导读 Pillow是Python中一个常用的图像处理库,这篇文章我们就来介绍一下如何通过Pillow来实现在图片上绘制各种图像以及文字. 安装 pip install Pillow 绘制文字 下载字体 ...

  7. Cesium中绘制矩形,根据四角/对角坐标绘制矩形

    Cesium中绘制矩形,根据四角/对角坐标绘制矩形 import store from '@/store/index' import * as Cesium from 'cesium'export d ...

  8. 定义一个矩形类Rectangle:(知识点:对象的创建和使用)

    /** 1:定义一个矩形类Rectangle:(知识点:对象的创建和使用)     定义三个方法:getArea()求面积.getPer()求周长,showAll()分别在控制台输出长.宽.面积.周长 ...

  9. 【Python】经典问题创建一个矩形类,定义方法 属性 初始化

    Hello,大家好,我是乔乔白术!今天还是处理一些我们的习题. # 定义一个矩形类Rectangle: #a. 定义三个方法:get_area()求面积.get_per()求周长,show_all() ...

  10. 【我的渲染技术进阶之旅】基于Filament渲染引擎绘制一个不停旋转的彩色矩形

    一.绘制三角形回顾 在上一篇博客 [我的渲染技术进阶之旅]Google开源的基于物理的实时渲染引擎Filament源码分析:Android版本的Filament第一个示例:sample-hello-t ...

最新文章

  1. 【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解
  2. [C#.NET 拾遗补漏]10:理解 volatile 关键字
  3. 解决若要安装 Microsoft Office 2010,需要MSXML 版本 6.10.1129的问题
  4. VMware发布面向未来的员工工作解决方案,满足分散办公需求
  5. wimbuilder2教程_Wimbuilder WIN10XPE制作所需的工程文件
  6. Kubernetes之StatefulSet
  7. 官宣了!受疫情影响,程序员可免费领这些!
  8. vs 外部依赖项、附加依赖项以及如何添加依赖项目
  9. 解决centos7 ssh连接慢的问题
  10. copying mysql status_MySQL主从复制延迟原因及处理思路
  11. Oracle数据库基础学习
  12. 从零开始研发GPS接收机连载——1、想法的萌发
  13. AndroidFTP客户端-FTP管家源码
  14. 避免移动终端设备数据丢失的十个方法
  15. Java语言十五讲(总结)
  16. 局部搜索(爬山法+模拟退火+遗传算法)
  17. 42. 通俗易懂大数据实时计算Storm教程
  18. 微信会不会封服务器ip,最新微信防封号设置技巧(新微信如何防止封号)
  19. kubernetes cordon原理
  20. mysql innodb 大小,更改Innodb 数据页大小优化MySQL

热门文章

  1. 演讲稿【物性的神奇】
  2. 远程服务器下载百度网盘中的内容
  3. 【Flutter】Dart 数据类型 布尔类型 ( 布尔类型定义 | 逻辑运算 )
  4. 苹果设备如何进入恢复模式
  5. 计算机心理学测试题目及答案解析,测量心理学考研重点选择题(含答案)
  6. 蓝桥杯——算法训练——P0704
  7. 给未来的电子工程师nbsp;---电子牛人给…
  8. Sphinx使用方法
  9. 动辄上亿损失,网络安全谁来买单?
  10. 社区价值:福山论自组织、社区、社会资本