如何使用着色器创建一条线(可能是彩色的)?我正在使用可编程管道,我是openGL的初学者。我找不到关于如何使用着色器绘制线条的示例。。我想我必须将VAO(顶点数组对象)加载到着色器中,但接下来呢?我应该使用什么功能以及如何使用?
首先,设置使用shader程序。然后,使用glDrawArrays(如果数据已编入索引,则使用元素)(模式=GL_lines)或其他线条绘制模式之一绘制线条。
下面是两端颜色不同的二维线的代码示例。如果着色模式设置为平滑,OpenGL将沿直线对颜色进行插值。
struct LineSegment_t
{
float x1, y1;
float r1,g1,b1,a1;
float x2, y2;
float r2,g2,b2,a2;
};
int num_verts = lines.size()*2;
glBindVertexArray( line_vao ); // setup for the layout of LineSegment_t
glBindBuffer(GL_ARRAY_BUFFER, LineBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(LineSegment_t)/2 * num_verts, &lines[0], GL_DYNAMIC_DRAW);
glDrawArrays(GL_LINES, 0, num_verts );
如果需要更大的灵活性,可以通过从直线端点创建一个矩形(4个点)来使用三角形绘制直线。在二维中,可以通过使用法线/垂直线(-y,x)将端点平移到所需的直线来创建4个点。在3D中,您需要确保三角形与Billboard中的相机对齐。