0

http://www.riemers.net/eng/Tutorials/DirectX/C++/Series1/tut10.php

リンクで指定された地形作成のチュートリアルでは、コードを理解できません。基本的に、このコードで何が起こっているのか

short s_Indices[(WIDTH-1)*(HEIGHT-1)*3];


for (int x=0;x< WIDTH-1;x++){
    for (int y=0; y< HEIGHT-1;y++)    {
        s_Indices[(x+y*(WIDTH-1))*3+2] = x+y*WIDTH;
        s_Indices[(x+y*(WIDTH-1))*3+1] = (x+1)+y*WIDTH;
        s_Indices[(x+y*(WIDTH-1))*3] = (x+1)+(y+1)*WIDTH;
    }
}

short s_Indices[(WIDTH-1)*(HEIGHT-1)*6];


for (int x=0;x< WIDTH-1;x++){
    for (int y=0; y< HEIGHT-1;y++)    {
        s_Indices[(x+y*(WIDTH-1))*6+2] = x+y*WIDTH;
        s_Indices[(x+y*(WIDTH-1))*6+1] = (x+1)+y*WIDTH;
        s_Indices[(x+y*(WIDTH-1))*6] = (x+1)+(y+1)*WIDTH;

        s_Indices[(x+y*(WIDTH-1))*6+3] = (x+1)+(y+1)*WIDTH;
        s_Indices[(x+y*(WIDTH-1))*6+4] = x+y*WIDTH;
        s_Indices[(x+y*(WIDTH-1))*6+5] = x+(y+1)*WIDTH;
    }
}

(x+y (WIDTH-1))*3+2] とは何か、なぜ x+y*WIDTH に等しいのか; これは、z が 0* である 4*3 地形を作成するためのコードです。

誰でもこのコードを簡単に説明してもらえますか、よろしくお願いします..

4

1 に答える 1

1

ジオメトリの描画に使用する頂点を列挙するインデックスの配列を設定しています。3つのインデックスの各グループは1つの三角形を表します(リンクしたページでわかるように、これを示す一連の三角形の図があります)。

だから例えば

s_Indices[(x+y*(WIDTH-1))*3+2] = x+y*WIDTH;

そのような三角形の左下隅です。

s_Indices[(x+y*(WIDTH-1))*3] = (x+1)+(y+1)*WIDTH;

右上隅です。

            x+1,y+1
          /|
         / |
    x,y /__| x+1,y
于 2013-03-17T09:21:58.817 に答える