Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Cube
- {
- public Matrix World;
- public Vector2 AtlasCoordinate;
- }
- Int32 count = 100;
- private void GenerateInstanceInformation()
- {
- Cube[] cubes = new Cube[count];
- Random rand = new Random();
- for (int i = 0; i < count; i++)
- {
- for (int x = 0; x < count; x++)
- {
- for (int z = 0; z < count; z++)
- {
- cubes[i].World = Matrix.CreateTranslation(new Vector3(x, 0, z));
- cubes[i].AtlasCoordinate = new Vector2(rand.Next(0, 2), rand.Next(0, 2));
- }
- }
- }
- instanceBuffer = new VertexBuffer(device, instanceVertexDeclaration, count, BufferUsage.WriteOnly);
- instanceBuffer.SetData(cubes);
- }
- public void DrawChunk(Effect effect, Camera camera, Texture2D texture)
- {
- effect.CurrentTechnique = effect.Techniques["Instancing"];
- effect.Parameters["WVP"].SetValue(camera.View * camera.Projection);
- effect.Parameters["cubeTexture"].SetValue(texture);
- device.Indices = indexBuffer;
- effect.CurrentTechnique.Passes[0].Apply();
- device.SetVertexBuffers(bindings);
- device.DrawInstancedPrimitives(PrimitiveType.TriangleList, 0, 0, 24, 0, 12, count);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement