2017-03-09 20 views
0

私は何百万という矢を描く必要があります。私が持っている情報は以下の通りです。各矢印の各矢印のOpenGLインスタンス化された図面 - 3D矢印

  • 位置

  • 方向(ベクトル方向)

  • 長さの情報と各矢印

場合、私は、OpenGLインスタンス化描画を使用することができ矢印を描く

私はインスタンス化された例を見てきました。これらの例では、各インスタンスなどの行列変換について説明しています。

しかし、上記のデータでは、可能かどうかはわかりません。

+0

https://www.khronos.org/opengl/wiki/Buffer_Textureを読み出します。しかし、なぜあなたはしたいですか?矢印をレンダリングする方法に応じて、各矢印の新しい頂点/プリミティブを生成する必要があるように思えます。 –

答えて

1

矢印がベクトルであるとすれば、すべてのベクトルデータを均一な配列**に挿入し、gl_InstanceIDを使用して頂点シェーダーでそれらを検索し、単純にgl_Positionに渡すことができます。

(データを見ると、位置を変換し、方向を回転して長さをスケーリングする)矢印に変換を適用する必要がある場合は、インスタンス化された描画ステートメントを単一の頂点セットで発行します(あなたの基底の矢印)、変換のための行列の一様な配列を使用し、これらの行列を頂点シェーダで同様の方法で見てください。

**あなたが持っているインスタンスの数によっては、データが一様な配列に収まらない場合があります。したがって、Uniformブロック(単純な統一変数より多くのデータを格納できる)を使用して調べることができます。十分でない場合は、GL_TEXTURE_BUFFERがトリックを行います。 GL_TEXTURE_BUFFERは、名前を騙さないでください。テクスチャデータだけでなく、任意のデータを保持できます。

制服ブロックはテクスチャバッファについてhttps://www.khronos.org/opengl/wiki/Uniform_Buffer_Object

に裏打ちされた、あなたは可能性が

関連する問題