DirectX または OpenGL を使用して 100 個のフローティング キューブを表示する

StackOverflow https://stackoverflow.com/questions/1064

質問

を使用して 100 個の浮遊立方体を表示したいと考えています DirectX または OpenGL.

サンプル ソース コードまたはテクニックの説明を探しています。複数の立方体を正しく表示するのに苦労しています。

私は一連の優れたチュートリアルを求めてネットをくまなく探しましたが、その方法については説明されています。 3D プリミティブ、私が見つけられないのは、大量の処理を実行する方法に関する情報です。 3D プリミティブ - cubes, spheres, pyramids, 、など。

正しい解決策はありません

他のヒント

立方体を 1 つ表示するのに十分な苦労があると言っています...したがって、表示できるものがあるかどうかはわかりません。

基本的に...キューブを作成するコードを 1 つの関数に入れて、その関数を 100 回呼び出すだけです。

void DrawCube()
{
    //code to draw the cube
}

void DisplayCubes()
{
    for(int i = 0; i < 10; ++i)
    {   
         for(int j = 0; j < 10; ++j)
         {
             glPushMatrix();
             //alter these values depending on the size of your cubes.
             //This call makes sure that your cubes aren't drawn overtop of each other
             glTranslatef(i*5.0, j*5.0, 0);
             DrawCube();
             glPopMatrix();
         }
    }              
}

これが、これを行う方法の基本的な概要です。もっと効率的なものが必要な場合は、基本を理解した後で表示リストを検討してください:)

同じコードを使用して glTranslatef (または DirectX と同等のもの) を使用して立方体を描画しますが、描画する場所の相対点を移動します。もしかしたらもっと良い方法があるかもしれませんが、私は OpenGL についてはかなり初心者です。すべてが見えるように視点を設定してください。

そうですね、効率的にやっていれば、すべてを同じ頂点バッファーに投げ込むことになりますが、100 個の立方体を描画しても、過去 5 年間に生産された GPU を使用することはないと思います。そのため、上記の提案に従えば問題ないはずです。

頂点シェーダーを介した基本的なパスを作成し、ピクセル シェーダーで必要に応じてシェーディングします。ワールド マトリックスを渡して頂点シェーダーで変換を行うか、CPU 側でワールド空間の頂点位置を計算するだけです (キューブが固定されたままになる場合はこれを実行します)。

派手になってやってもいいでしょう ジオメトリのインスタンス化 などですが、まずは基本を理解してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top