繁体   English   中英

openGL:带着色器的线条

[英]openGL: lines with shaders

如何使用着色器创建一条线(可能是彩色的)? 我正在使用可编程管道,我是openGL的初学者。 我找不到一个如何使用着色器绘制线条的示例..我想我必须将VAO(顶点数组对象)加载到着色器中,但那又是什么? 我应该使用哪些功能以及如何使用?

首先,设置使用着色器程序。 然后使用glDrawArrays (或元素,如果您的数据被索引)使用mode = 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个点)来使用三角形绘制线条。 在2D中,您可以通过使用法线/垂直线(-y,x)平移所需的线来创建4个点。 在3D中,您需要确保三角形与广告牌中的相机对齐。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM