Opengl es 如何在OpenGL中绘制有厚度的平滑线[ES 2]

Opengl es 如何在OpenGL中绘制有厚度的平滑线[ES 2],opengl-es,drawing,opengl-es-2.0,Opengl Es,Drawing,Opengl Es 2.0,我正在寻找一种方法,在不使用build-it-glLineWidth函数的情况下,使用OpenGL ES2绘制具有厚度和平滑度的线条,该函数有很多限制。我认为这可以使用着色器完成,但我的glsl技能有限 我已经尝试过的是构造一个具有圆形关节的多边形,如图所示。然而,对于我的免费绘画目的,这是一个过度,使我的应用程序运行非常缓慢。因此,我认为,在顶点着色器中执行相同的操作将提高性能,但对于我的目的(绘图)来说,这并没有多大用处 所以,现在我有一组点可以很好地描述这条线,如果我能够连接它们并给出每个

我正在寻找一种方法,在不使用build-it-glLineWidth函数的情况下,使用OpenGL ES2绘制具有厚度和平滑度的线条,该函数有很多限制。我认为这可以使用着色器完成,但我的glsl技能有限

我已经尝试过的是构造一个具有圆形关节的多边形,如图所示。然而,对于我的免费绘画目的,这是一个过度,使我的应用程序运行非常缓慢。因此,我认为,在顶点着色器中执行相同的操作将提高性能,但对于我的目的(绘图)来说,这并没有多大用处


所以,现在我有一组点可以很好地描述这条线,如果我能够连接它们并给出每个连接的线段的厚度。

在这种情况下,通常做的是绘制一个没有平滑的四边形。然后使用平滑、单像素宽的线条绘制四元体的轮廓。

要做的着色器需要是几何体着色器,而不是顶点着色器(您希望基于给定的数据构造顶点)。据我所知(我可能错了),有两种类型的着色器(顶点着色器和片段着色器)。第一种用于顶点,第二种用于片段,这是两个顶点之间插值的“点”。几何体、镶嵌、顶点和碎片。至少在新的OpenGL中。看看OpenGL ES 2的标题和标签:正如Valentin正确评论的那样,只有2个着色器(顶点和片段)。@BartekBanachewicz,甚至对于现代桌面GL,这都是完全错误的(尽管Peter和Valentin无论如何都是绝对正确的)。有五种类型的着色器:顶点、细分控制、细分计算、几何体和片段。