シェーダを使って線を描くにはどうすればいいですか?プログラマブルなパイプラインを使用しています。私は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. QGLShaderProgram OpenGLのシェーダ
- 2. OpenGLシェーダのパフォーマンスプロファイリング
- 3. OpenGLシェーダ対CUDA
- 4. OpenGL ESとOpenGL互換シェーダ
- 5. fragシェーダのOpenGLカラーインデックス?
- 6. シェーダなしのOpenGL
- 7. Android用OpenGL ES 2.0のシェーダ
- 8. Android用のシェーダOpenGL ES
- 9. OpenGL - 計算シェーダ - iOS - オプション?
- 10. OpenGLシェーダの色が「消える」
- 11. OpenGLシェーダのコンパイルに失敗する
- 12. NativeActivityでOpenGLシェーダを作成する
- 13. シェーダ付きOpenGLで照明する
- 14. フレームバッファとOpenGLでシェーダを使用する
- 15. OpenGLプログラムにシェーダを添付する
- 16. OpenGL HQXシェーダをLibGDXに変換する
- 17. シェーダから操作するOpenGLオブジェクト
- 18. OpenGL:バッファオブジェクト/シェーダがスコープ外に出る
- 19. OpenGLシェーダのパイプラインの深さの計算
- 20. エラーメッセージなしのOpenGLシェーダのリンクエラー
- 21. OpenGL ES20のライティングエフェクトの頂点シェーダとフラグメントシェーダ
- 22. シェーダなしのOpenGL ESへのPhotoshopブレンドモード
- 23. OpenGLシェーダ関数texture2DRect()のドキュメントはどこにありますか?
- 24. シェーダへのOpenGLテクスチャベース内部フォーマット
- 25. 2つのテクスチャを持つOpenGLシェーダ
- 26. OpenGLプログラム/シェーダの初期化解除
- 27. OpenGL:フラグメントとグラデーションの頂点シェーダ?
- 28. ソフトウェアアーキテクチャ:OpenGLシェーダの作成とコンパイル
- 29. bindBufferBaseとOpenGL計算シェーダの再利用
- 30. OpenGLシェーダがコンパイルされない
三角形を描く方法は分かりますか?それは本当に違いはありません、あなたはGL_TRIANGLESの代わりにGL_LINESを指定して、glDrawArrays/glDrawElements – Tim
のサンプルコードを指定しますか? –