Beispiel #1
0
        public void GenerateGeometry(RenderManager Render)
        {
            Dictionary <string, GeometryModel> Models = Render.Models;

            //Generate
            foreach (KeyValuePair <string, GeometryModel> entry in Models)
            {
                Geometry3D NewBatch = new Geometry3D(entry.Key);
                NewBatch.SetVertexBuffer(entry.Value.GetBufferData(Render.Graphics), entry.Value.VertexList.ToArray());
                NewBatch.Shader      = entry.Value.Shader.Clone();
                NewBatch.DepthShader = entry.Value.DepthShader.Clone();
                NewBatch.SetIndexBuffer(GraphicsUtil.GenerateIndexBuffer(Render.Graphics, entry.Value.VertexList.Count));

                //TODO
                //Add Proper System for texture import
                foreach (KeyValuePair <string, string> Textures in entry.Value.Textures)
                {
                    if (NewBatch.Shader.Parameters[Textures.Key] != null)
                    {
                        NewBatch.Shader.Parameters[Textures.Key].SetValue(Render.Textures[Textures.Value]);
                    }
                }

                NewBatch.CurrentRenderMode = Geometry3D.RenderMode.Instanced;
                //set VertexBuffer
                Batches.Add(NewBatch);
            }
        }