一起学 WebGL:图元的类型

news2024/11/9 10:05:19

大家好,我是前端西瓜哥,今天来说说 WebGL 中的三种图元。

在 WebGL 中,图元有三种:点、线、以及三角形。

绘制的 API 为:

gl.drawArrays(mode, first, count)

这里的 mode 就是要绘制的图元类型。

我们绘制 4 个点,下面是示意图,并按顺序标明绘制方向。

下面来看看这四个顶点在不同图元类型下的效果。

gl.POINTS

点。

一个个绘制顶点,各个顶点之间没有联系。

gl.drawArrays(gl.POINTS, 0, 4);

gl.LINES

线段。

每两个点一组,绘制多条线段。

gl.drawArrays(gl.LINES, 0, 4);

gl.LINE_STRIP

线条(strip)。

多个点按顺序依次相连,形成一条多个线段组成的折线。

gl.drawArrays(gl.LINE_STRIP, 0, 4);

gl.LINE_LOOP

回路。

类似 gl.LINE_STRIP,也是多个点顺序相连,但多了一个头尾顶点相连。

gl.drawArrays(gl.LINE_LOOP, 0, 4);

gl.TRIANGLES

三角形。

三个点为一组,绘制一个三角形。如果最后一组凑不够三个点,会被丢弃不绘制。

gl.drawArrays(gl.TRIANGLES, 0, 4);

gl.TRIANGLE_STRIP

三角带。

有点像 gl.LINE_STRIP,从第二个点开始,会和前两个点为一组绘制一个三角形,也就是一个点最多会被 3 个三角形共享。所以相比 gl.TRIANGLES,可以用更少的信息去绘制同样的效果。

gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);

可以看到,第 1、2 个顶点形成的边被两个三角形共用了。

gl.TRIANGLE_FAN

三角扇。

从第二个点开始,和它的上一个点,以及第一个点组成一个三角形。

也就是第一个点会被所有三角形共用。

gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);

适合用来绘制多边形。

动手试试

demo 地址。

https://codesandbox.io/s/47120y?file=/index.js

修改最后一行代码,改为上面的图元模式,看看效果吧。

或者你可以追加一些顶点坐标看看效果,记得不要忘记改 gl.drawArrays 方法的最后一个参数,即使用的顶点的个数。

结尾

我是前端西瓜哥,欢迎关注我,学习更多 WebGL 知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

办公协作效率想提质增效,可借助开源大数据工具!

在信息爆炸式发展的今天,提升办公协作效率,让各部门的信息有效互通起来,做好数据管理,已经成为众企业提升竞争力的方式方法。那么,如果想要提升办公效率,就需要了解开源大数据工具了。在数字化发展进程中&a…

HTTP协议概述 | 简析HTTP请求流程 | HTTP8种请求方法

目录 🌏 HTTP的简单介绍 何为HTTP HTTP1.0与HTTP1.1 🌏 HTTP的请求方法 1、OPTIONS 2、HEAD 3、GET 4、POST 5、PUT 6、DELETE 7、TRACE 8、CONNECT 🌏 HTTP的工作原理 🌏 HTTP请求/响应的步骤 1、客户端连接到Web…

AI 芯片的简要发展历史

随着人工智能领域不断取得突破性进展。作为实现人工智能技术的重要基石,AI芯片拥有巨大的产业价值和战略地位。作为人工智能产业链的关键环节和硬件基础,AI芯片有着极高的技术研发和创新的壁垒。从芯片发展的趋势来看,现在仍处于AI芯片发展的…

【案例教程】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术

【原文链接】: 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537049&idx3&sn31ef342c4808aed6fee6ac108b899a33&chksmfe6897f3c91f1ee5c4fa8e4eeea34…

JDBC概述三(批处理+事务操作+数据库连接池)

一(批处理) 1.1 批处理简介 批处理,简而言之就是一次性执行多条SQL语句,在一定程度上可以提升执行SQL语句的速率。批处理可以通过使用Java的Statement和PreparedStatement来完成,因为这两个语句提供了用于处理批处理…

IO多路复用机制详解

高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blo…

【WebGIS实例】(7)MapboxGL绘制不同颜色的Symbol图标

前言 在上一篇实例博客中(MapboxGL绘制简易气泡图)我们绘制了一个简易的单色气泡图,现在需求升级了。我们需要为气泡加载不同的颜色。 而要实现这个效果,其实相当简单,直接利用Mapbox提供的SDF渲染方法。 官网教程参考…

当星辰天合 SDS 遇见 Elastic

4 月 8 日,“Elastic 中国开发者大会 2023 ”在深圳举行,XSKY星辰天合对象存储产品总监邹博引代表星辰天合参加了此次大会,并做了主题为《SDS 与 Elasticsearch 的碰撞》的分享。“Elastic 中国开发者大会 2023 ”是由 Elastic、Elastic 中文…

【三十天精通Vue 3】 第三天 Vue 3的组件详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 组件的概述1. Vue 3 的组件系统2. Vue 3 组件的特点…

【CE】Mac下的CE教程Tutorial:进阶篇(第9关:共享的代码)

▒ 目录 ▒🛫 导读开发环境1️⃣ 第9关:共享的代码翻译操作🛬 文章小结📖 参考资料🛫 导读 开发环境 版本号描述文章日期2023-03-操作系统MacOS Big Sur 11.5Cheat Engine7.4.3 1️⃣ 第9关:共享的代码 翻…

Python数据分析matplotlib学习

Python数据分析的工具和库包括: 1.Jupyter Notebook:用于交互式数据分析和可视化。 2.NumPy:用于进行数值计算和数组操作。 3.Pandas:用于数据处理和清洗。 4.Matplotlib:用于数据可视化。 5.Scikit-learn:…

MAZDA CX-50没现车怎么办?赶紧去VR看车啊!

爱车一族往往都有过这样的经历:听说某家品牌出了一款心仪的新车,于是一直心心念念想要先睹为快。然而这时候问题就来了:新车从发布到量产上市往往要经历一段过程。没有现车的日子里,就算每天去4S店蹲守也看不到新车。那种心里痒痒…

集成学习详细总结(不涉及数学理论部分)

集成学习(Ensemble Learning) 1概念 集成学习就是将多个弱学习器组合在一起,从而得到一个更好更全面的强监督学习器模型。其中集成学习被分为3大类:bagging(袋装法)不存在强依赖关系,其中基学…

Pytorch深度学习笔记(一)前瞻概述

目录 1.人类智能Human intelligence 2.机器学习Machine learning 3.学习系统Learning System 4.神经网络neural network 课程推荐:《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili 1.人类智能Human intelligence 人类智能Human intelligence:把视…

2023年第十四届蓝桥杯javaB组省赛真题

👨‍💻作者简介:练习时长两年半的java博主 📖个人主页:君临๑ 🎞️文章介绍:2023年第十四届蓝桥杯javaB组省赛真题 🎉所属专栏:算法专栏 🎁 ps:点…

批量自动翻译软件-准确的翻译软件

现代社会,在全球化背景下,语言障碍是碍企业发展的主要因素之一。而翻译软件的出现,为人们跨越语言障碍带来了新的解决方案。针对翻译需要大量文字内容的情况,有一些能翻译大量文字的翻译软件: 147CGPT翻译软件特点&…

【硬件】嵌入式板卡硬件电路设计、焊接

文章目录嵌入式板卡电路 框图常用焊接工具和焊接操作 框图一、元器件//——有极性——//1 肖特基二极管2 钽电容3 三极管4 MOS5 LED6 SMAJ5.0CA(TVS管)8 SRV05-4(ESD管)7 电解电容//——无极性——//1 电容2 电阻3 电感4 保险丝//…

软件测试别再说简历项目不会写了,给你安排的明明白白

目录 个人信息 职业技能 工作经历 项目经历 工作经历 项目经历 教育经历 自我评价 个人信息 姓 名:xxx 性 别:女 手 机:xxxxxxxxxxxx 最高学历:统招硕士 工作年限:3 年 职…

Linux搭建docker

1. 查看系统的内核版本 [rootwide ~]# uname -r 3.10.0-1160.el7.x86_642. 将yum更新到最新版本 [rootwide ~]# yum upate -y Complete!3. 安装Docker所需的依赖包 [rootwide ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2 Loaded plugins: fastes…

Ae:几何选项

在 Ae 中,一个图层开启 3D 之后,会多出几何选项 Geometry Options和材质选项 Material Options两个属性组。如果“几何选项”不可用,可尝试“更改渲染器” Change Renderer,比如,在合成设置中将“经典 3D” Classic 3D…