シェーダを使って線を描くにはどうすればいいですか?プログラマブルなパイプラインを使用しています。私はOpenGLの初心者です。シェーダで線を描く方法の例が見つかりません。シェーダにVAO(頂点配列オブジェクト)をロードする必要があると思いますが、それでは何ですか?どのような機能を使用すればいいのですか?OpenGL:シェーダのあるライン
14
A
答えて
9
まず、シェーダープログラムを設定します。次に、mode = GL_LINESまたは他の線描画モードのいずれかを使用してglDrawArrays(またはデータがインデックスされている場合はElements)を使用して線を描画します。
ここには、両端に色の異なる2D線のコード例があります。シェーディングモードがsmoothに設定されている場合、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では、ビンボーディングのように三角形をカメラに合わせる必要があります。
関連する問題
- 1. OpenGLシェーダのパフォーマンスプロファイリング
- 2. OpenGLシェーダ対CUDA
- 3. OpenGL ESとOpenGL互換シェーダ
- 4. fragシェーダのOpenGLカラーインデックス?
- 5. Android用のシェーダOpenGL ES
- 6. OpenGLシェーダのコンパイルに失敗する
- 7. OpenGLシェーダの色が「消える」
- 8. フレームバッファとOpenGLでシェーダを使用する
- 9. OpenGLプログラムにシェーダを添付する
- 10. OpenGL HQXシェーダをLibGDXに変換する
- 11. NativeActivityでOpenGLシェーダを作成する
- 12. OpenGLシェーダのパイプラインの深さの計算
- 13. OpenGLシェーダ関数texture2DRect()のドキュメントはどこにありますか?
- 14. シェーダなしのOpenGL ESへのPhotoshopブレンドモード
- 15. OpenGLプログラム/シェーダの初期化解除
- 16. シェーダへのOpenGLテクスチャベース内部フォーマット
- 17. OpenGL ES 2.0シェーダで滑らかなテクスチャライン
- 18. 透視投影OpenGLと計算シェーダ
- 19. OpenGLシェーダを使用したガウスフィルタ
- 20. OpenGL ES 2.0シェーダを開発するためのツールはありますか?
- 21. OpenGLシェーダでNaNを検出する最善の方法
- 22. OpenGLシェーダの読み込みに失敗する
- 23. OpenGL ES 2.0で "グロー"シェーダ効果を得るには?
- 24. シェーダ使用時にQGLWidgetでOpenGLでQPainterを使用する
- 25. OpenGLで頂点シェーダにデータを送る方法は?
- 26. OpenGL esシェーダを使用してYUVをRGBに変換する
- 27. OpenGL - シェーダ、シンボルは、vとfの2つの異なるタイプで定義されています。シェーダ
- 28. OpenGLでのシェーダの変換行列の計算方法
- 29. OpenGLシェーダのコンパイルの問題 - 予期しないEOF
- 30. OpenCLとOpenGLの計算シェーダの違いは何ですか?
三角形を描く方法は分かりますか?それは本当に違いはありません、あなたはGL_TRIANGLESの代わりにGL_LINESを指定して、glDrawArrays/glDrawElements – Tim
のサンプルコードを指定しますか? –