17

シェーダーを使用して線 (場合によっては色付き) を作成するにはどうすればよいですか? プログラム可能なパイプラインを使用しており、openGL の初心者です。シェーダーで線を描画する方法の例が見つかりません.VAO (頂点配列オブジェクト) をシェーダーにロードする必要があると思いますが、その後はどうすればよいでしょうか? どの機能をどのように使用すればよいですか?

4

1 に答える 1

12

まず、シェーダープログラムを使用するように設定します。次にglDrawArrays (データがインデックス化されている場合は Elements) を mode=GL_LINES または他の線描画モードのいずれかで使用して線を描画します。

両端に異なる色の 2D 線のコード例を次に示します。シェーディング モードがスムーズに設定されている場合、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 では、三角形がビルボードのようにカメラに位置合わせされていることを確認する必要があります。

于 2012-07-21T18:15:45.727 に答える