簡體   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