首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GLSL绘制线条

使用GLSL绘制线条
EN

Stack Overflow用户
提问于 2011-03-28 19:16:52
回答 2查看 3.2K关注 0票数 0

有没有可能用GL_TRIANGLES和GLSL划清界限?

我问这个问题的原因是我试图用adobes molehill画一条线,但它只画了三角形。

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-28 19:28:29

如果将边渲染设置为打开,则只需将点1和点3绘制在同一位置即可。它不是很有效,但它是有效的。

票数 3
EN

Stack Overflow用户

发布于 2017-06-01 16:30:07

如果可以,请使用几何体着色器。传入两个顶点和一个线宽,通过移动顶点生成4个形成两个三角形的点,渲染并完成...但是在没有几何着色器的情况下使用三角形绘制宽线也可以在OpenGL ES 2.0 (没有几何着色器)和桌面OpenGL中仅使用顶点着色器来完成:

生成顶点数据,以便为每条线复制顶点(每条线4个顶点)。对于每个顶点,为上一条线和下一条线的顶点传递两个额外的vec2/vec3属性(用于计算正确的线连接),或者简单地传递vec2/vec3线方向。同时添加一个表示“法线”的浮动顶点属性,也就是移动每个顶点的方向。对于直线的一个端点(现在使用两个顶点),将“法线”设置为一个方向,将重复顶点设置为相反方向。生成这些顶点的三角形(通过索引或其他方式),并使用GL_TRIANGLES进行渲染。

在顶点着色器中,使用顶点和上一个或下一个顶点来计算线方向,并(在2D情况下很简单)生成一个垂直于它的向量。将其乘以您作为顶点属性传递的"normal“。这会将你的线条“移到边上”,这样就会生成一个实际的三角形。

在2D中生成具有正确像素大小的线条很简单(虽然使用均匀缩放,但也可以使用非均匀缩放)-使用模型视图矩阵(例如modelView)中的比例因子,并在顶点着色器中将线宽除以它。在3D中,这有点复杂...

这里有对here技术的很好的解释,动画示例here和源代码here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5458185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档