0

現在、ランダムな地形ジェネレーターを使用しています。これは正しく機能すると確信していますが、のセットを作成しようとすると、VertexPositionColor正しくレンダリングされません。これは私が現在持っているものです(俯瞰図): 俯瞰図

私のコード:

List<VertexPositionColor> w = new List<VertexPositionColor>();
int width = 20;
int height = 20;
float terrainScale = 2.0f;
long seed = (DateTime.Now.Millisecond + DateTime.Now.Second * DateTime.Now.Hour);
ProceduralLayeredMapGenerator plmg = new ProceduralLayeredMapGenerator(seed);
Random rand = new Random((int)seed);
for (int y = 0; y < height; y++)
{
    for (int x = 0; x < width; x++)
    {
        Vector3 position = new Vector3();
        position.X = x;//(x - width / 2) * terrainScale;
        position.Z = y;//(y - height / 2) * terrainScale;
        float point = plmg.getPoint(x, y);
        Color computedColor = new Color(rand.Next(255), rand.Next(255), rand.Next(255));
        position.Y = (point * 2);
        w.Add(new VertexPositionColor(position, computedColor));
    }
}
colors = w.ToArray();

そして、描画コード:

foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
    pass.Apply();
    GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, colors, 0, colors.Length / 3, VertexPositionColor.VertexDeclaration);
}

どうすればもっと次のように見せることができますか?

ここに画像の説明を入力してください

4

1 に答える 1

0

TriangleStripを描画する場合は、三角形の描画に使用される順序で頂点を追加する必要があります。現在、頂点を上から下、左から右に追加しています。また、そのような高さマップをレンダリングするには、複数のTriangleStripsを使用する必要があります。

于 2013-01-28T16:51:24.607 に答える