openGL绘制矩形的顶点定义与矩形绘制
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绘制矩形的顶点定义与矩形绘制相关推荐
- python判断点在矩形内_定义一个矩形和点的位置,判断点是否在矩形里面
25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width:矩形的高height. 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和h ...
- 【OpenCV3】旋转矩形(cv::RotateRect)的绘制
在OpenCV3中的绘图详解中,我们详细地介绍了opencv3中所支持的各种几何形状的绘制,其中矩形的绘制接口为cv::rectangle(),但是这个接口只能用于绘制正常矩形(即cv::Rect定义 ...
- opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形
一.简介 二.外接矩形的查找绘制 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 void main() 4 { 5 ...
- 安卓自定义View基础05-Canvas之基础图形绘制,点,线,矩形,圆,椭圆,弧形等
一.Canvas简介 Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础, 源码中关于Canvas的解释: The Canvas class holds the &q ...
- SVG、canvas、绘制线段和填充多边形、矩形、曲线的绘制和填充
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 1.了解网页中的两个绘图技术 (1)SVG (2)canvas (3)画布的尺寸和坐标 2.绘制线段和填充多 ...
- 使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字
导读 Pillow是Python中一个常用的图像处理库,这篇文章我们就来介绍一下如何通过Pillow来实现在图片上绘制各种图像以及文字. 安装 pip install Pillow 绘制文字 下载字体 ...
- Cesium中绘制矩形,根据四角/对角坐标绘制矩形
Cesium中绘制矩形,根据四角/对角坐标绘制矩形 import store from '@/store/index' import * as Cesium from 'cesium'export d ...
- 定义一个矩形类Rectangle:(知识点:对象的创建和使用)
/** 1:定义一个矩形类Rectangle:(知识点:对象的创建和使用) 定义三个方法:getArea()求面积.getPer()求周长,showAll()分别在控制台输出长.宽.面积.周长 ...
- 【Python】经典问题创建一个矩形类,定义方法 属性 初始化
Hello,大家好,我是乔乔白术!今天还是处理一些我们的习题. # 定义一个矩形类Rectangle: #a. 定义三个方法:get_area()求面积.get_per()求周长,show_all() ...
- 【我的渲染技术进阶之旅】基于Filament渲染引擎绘制一个不停旋转的彩色矩形
一.绘制三角形回顾 在上一篇博客 [我的渲染技术进阶之旅]Google开源的基于物理的实时渲染引擎Filament源码分析:Android版本的Filament第一个示例:sample-hello-t ...
最新文章
- 【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解
- [C#.NET 拾遗补漏]10:理解 volatile 关键字
- 解决若要安装 Microsoft Office 2010,需要MSXML 版本 6.10.1129的问题
- VMware发布面向未来的员工工作解决方案,满足分散办公需求
- wimbuilder2教程_Wimbuilder WIN10XPE制作所需的工程文件
- Kubernetes之StatefulSet
- 官宣了!受疫情影响,程序员可免费领这些!
- vs 外部依赖项、附加依赖项以及如何添加依赖项目
- 解决centos7 ssh连接慢的问题
- copying mysql status_MySQL主从复制延迟原因及处理思路
- Oracle数据库基础学习
- 从零开始研发GPS接收机连载——1、想法的萌发
- AndroidFTP客户端-FTP管家源码
- 避免移动终端设备数据丢失的十个方法
- Java语言十五讲(总结)
- 局部搜索(爬山法+模拟退火+遗传算法)
- 42. 通俗易懂大数据实时计算Storm教程
- 微信会不会封服务器ip,最新微信防封号设置技巧(新微信如何防止封号)
- kubernetes cordon原理
- mysql innodb 大小,更改Innodb 数据页大小优化MySQL