OpenGLでボクセル(立方体)を描画する最も効率的な方法は何ですか?質問する

OpenGLでボクセル(立方体)を描画する最も効率的な方法は何ですか?質問する

OpenGL を使用してボクセルを描画したいのですが、サポートされていないようです。24 個の頂点 (面ごとに 4 個の頂点) を持つ立方体描画関数を作成しましたが、2500 個の立方体を描画するとフレーム レートが低下します。もっと良い方法があることを期待しています。理想的には、位置、エッジ サイズ、および色をグラフィック カードに送信したいだけです。GLSL を使用してフラグメント シェーダーまたは頂点シェーダーの一部として命令をコンパイルすることでこれが実行できるかどうかはわかりません。

Google で検索して、ポイント スプライトとビルボード スプライト (同じもの?) について知りました。これらを使用して、立方体をすばやく描画する代わりに使用できますか? 面ごとに 1 つずつ、合計 6 つを使用すると、グラフィック カードに送信される情報が大幅に少なくなり、フレーム レートが向上すると思われます。

もう 1 つの考えは、1 回の drawelements 呼び出しを使用して複数のキューブを描画できるかどうかです。

もしかしたら、私が知らないもっと良い方法があるかもしれません。どんな助けでも大歓迎です。

ベストアンサー1

ボクセルを立方体で描画するのは、ほとんどの場合間違った方法です (例外はレイトレーシングです)。通常、データを 3D テクスチャに配置し、カメラの位置に応じてスライスをレンダリングします。このページを参照してください。https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch39.html「ボリューム レンダリング GPU」を検索すると、他のテクニックも見つかります。

編集:上記の回答を書いたとき、私はOPがMinecraftでどのようにそれを行うかに興味を持っているとは思っていませんでした。Minecraftスタイルのラスタライズを高速化するテクニックについては、以下をご覧ください。多数の立方体をレンダリングするためのカリング手法ただし、最近のグラフィック ハードウェアの進歩により、レイトレーシングによる Minecraft のレンダリングが現実になるかもしれません。

おすすめ記事