public Building(RgbaFloat color) : base("Building") { Resources.OnInitialize = (factory, device) => { _model.Buffer.Initialize(factory, device); _color = new UniformColor(color); _color.Buffer.Initialize(factory, device); ResourceLayout = factory.CreateResourceLayout(new ResourceLayoutDescription( new ResourceLayoutElementDescription[] { UniformModelTransformation.ResourceLayout, UniformViewProjection.ResourceLayout, _color.LayoutDescription } )); ResourceSet = factory.CreateResourceSet(new ResourceSetDescription( ResourceLayout, _model.Buffer.DeviceBuffer, CameraViewProjection.DeviceBuffer, _color.Buffer.DeviceBuffer )); }; Resources.OnDispose = () => { _color.Buffer.Dispose(); ResourceLayout.Dispose(); ResourceSet.Dispose(); }; }
public Color(RgbaFloat?color = null) : base(nameof(Color)) { _color = color.HasValue ? new UniformColor(color.Value) : new UniformColor(); Resources.OnInitialize += (_, e) => { _color.Buffer.Initialize(e.ResourceFactory, e.GraphicsDevice); }; Resources.OnDispose += (_, __) => _color.Buffer.Dispose(); }