WebGL绘制带箭头贴图的线

本文详细介绍了如何在WebGL中使用Shader程序绘制带宽度的线条,并结合箭头贴图实现线的箭头效果。内容包括计算带宽度线的顶点数据、Shader程序的实现以及箭头贴图的坐标计算。建议读者先具备WebGL基础知识和Shader程序调用经验。
demo
示例

在讲述本文内容之前,我希望读者先具备以下知识点:

  1. 了解WebGL的基本知识,懂得调用自定义的Shader程序;
  2. 基本的数学基础和空间几何知识;
  3. 明白GPU的渲染管线流程;

因为,本文内容主要讲述绘制的核心思路和注意事项,所以对于基本知识只能简单描述,请谅解;

前言

首先,先附上一篇至今我看到思路十分正确,图文并茂(图片真的很好看)的讲述WebGL绘制有宽度的线和箭头贴图的文章:WebGL绘制有宽度的线  https://www.cnblogs.com/dojo-lzz/p/9219290.html

链接博客的作者基本讲述本文想要讲的主要思路,但是他并没有过多的讲述其他细节。我就在上述的博文中补充一些关键的细节。

在绘制箭头线之前,我们必须掌握如何绘制有宽度的线条,因为,箭头图片的贴图坐标与此有关。

绘制有宽度的线

WebGL提供绘制线条的接口中是提供了线条宽度的属性,但是在windows系统中不管设置线宽的属性为多少,都是一条只有一像素宽度的线。因此,我们需要利用绘制三角形的方式去拟合带宽度的线。

从上述两张图片可以简单的理解,如何从一条线去构造宽带;假设我们有以下线的顶点数据 Line = [p0, p1, p2 ...],那么我们需要将顶点沿着直线方向的法线方向(垂直方向上)的正方向和反方向各平移 lineWidth / 2 的距离,这就刚好实现宽度为lineWidth的线条。原理十分的简单。

而我们的顶点数据的在每个顶点处只有一个点,若需要在法线方向上的正反方向上都平移,则我们需要提前把一个顶点复制两份,同时做上标识是正方向还是负方向(因为需要区分三角形的顶点索引顺序),然后传给Shader程序。一般上述的步骤需要在Js

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值