我现在正在使用大量的GL_LINES
,它们都有统一的半径,来绘制我的模型。我知道glLineWidth
会改变所有线条的半径,但每条线条应该具有不同的半径。我想知道是否可以使用glLineWidth
(以不同方式)或另一个函数来实现?还有其他方法吗?
vec2
。vec2 p1(x1, y1);
vec2 p2(x2, y2);
vec2 v = p2 - p1;
v /= v.length(); // make it a unit vector
vec2 vp(-v.y, v.x); // compute the vector perpendicular to v
vec2 v[4];
v[0] = p1 + W/2 * vp;
v[1] = p1 - W/2 * vp;
v[2] = p2 + W/2 * vp;
v[3] = p2 - W/2 * vp;
// Load the v[] array into a vertex-buffer object
这提供了将单行转换为四边形的解决方案。为了将它们连接在一起,我们需要创建一个包含退化三角形的三角形带。如果我们使用glDrawElements
进行绘制,可以构建一个简单的索引数组来实现这一点。假设我们按照上述方法将两条线转换为四边形,得到顶点v[0]...v[7]。要将它们变成单个三角形带,请制作一个索引列表:
{ 0, 1, 2, 3, 3, 4, 5, 6, 7 }
通过在列表中两次重复“3”,我们创建了一个新的三角形,将其他三角形连接在一起,但不会显示。如果重复四边形的最后一个顶点,则可以将整个GL_LINES集渲染为单个三角形带。