Shader从入门到放弃(三) —— 绘制函数

本文介绍了如何使用OpenGL Shader绘制函数和线段,通过将曲线分割成小段并利用微积分思想,结合点到直线距离公式,实现曲线的平滑绘制。文章详细讲解了线段的绘制过程,并给出了绘制函数的GLSL代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天,我们就运用我们之前所学习的知识来绘制函数。

绘制函数

今天我们的编程目标是在我们之前绘制的网格中绘制任意的函数。我们绘制函数的基本思路是利用了微积分的思想,将任意的曲线分割成若干的曲线,通过绘制一小段一小段的直线来达到绘制曲线的目的。

可以看下面的两张图,第一张图的步长比较大,所以我们能够看出一些折线的感觉,第二张图中,我采用了更小的步长来进行绘制,所以整个函数看起来十分的圆滑。

绘制线段

那么有了这样的一个基本思想过后,现在有一个直接的问题摆在我们的眼前,那就是如何绘制一条线段? 有了之前的基础我们很容易就可以想到:

我们可以求出点到直线的距离,然后计算该距离是否处于某个值内(线的宽度)?如果存在我们就给这个点赋予一个颜色。伪代码如下:

d = LineDist(point, line);
if (d < lineWidth / 2) {fragColor = vec3(1.0);
} 

那么现在问题又转化为:如何计算点到直线的距离 有的小伙伴可能会反应出来之前初中学习过点到直线的距离公式:

d=Ax+By+CA2+B2d = \frac{Ax + By + C}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值