public void Start() { XChunk.Width = 16; XChunk.Depth = 16; XChunk.Height = 256; for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { var ch = new XChunk(this, new Vector3(i * 16, 0, j * 16), new Vector3(0)); var hm = simplexNoise.GetNoiseMap2D(i * 16, j * 16, 16, 16); ch.HeightMap = hm; Chunks[i + j * SIZE] = ch; } } Task.Run(() => { Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < Chunks.Length; i++) { Chunks[i].Generate(); } for (int i = 0; i < Chunks.Length; i++) { Chunks[i].CalculateOffset(); } object raw = File.ReadAllBytes(@"data\chunks\indices.byte").DeserializeToDynamicType(); int[] indices = (int[])raw; indexBuffer = new IndexBuffer(Device, IndexElementSize.ThirtyTwoBits, indices.Length, BufferUsage.WriteOnly); indexBuffer.SetData <int>(indices); indices = new int[0]; vertexBuffer = new VertexBuffer(Device, typeof(VertexPositionTexture), XChunk.TILE_SIZE * 10, BufferUsage.WriteOnly); buildBuffers(); sw.Stop(); Console.WriteLine("DONE IN " + sw.Elapsed.TotalSeconds + " SECONDS!"); IsReady = true; }); }