使用GLSL绘制线条

时间:2011-03-28 11:16:52

标签: opengl line glsl

是否可以使用GL_TRIANGLES与GLSL绘制一条线?

我问的原因是我试图用adobes molehill绘制一条线,它只绘制三角形。

干杯

2 个答案:

答案 0 :(得分:3)

如果将边渲染设置为打开,只需在同一位置绘制点1和3的三角形。 它没有效率,但它确实有效。

答案 1 :(得分:0)

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

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

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

生成具有正确像素大小的行在2D中很简单(尽管具有均匀缩放,但也可以使用非均匀缩放) - 使用模型视图矩阵中的缩放因子(例如modelView [0] [0])并在顶点着色器中将您的线宽除以它。在3D中,这涉及更多......

对技术here,动画示例here和源代码here进行了很好的解释。