public Surface() : base("UI Surface")
{
Resources.OnInitialize = (factory, device) => {
_device = device;
_size = new Size(
(int)device.SwapchainFramebuffer.Width,
(int)device.SwapchainFramebuffer.Height
);
_sampler = device.LinearSampler;
ResourceLayout = factory.CreateResourceLayout(
new ResourceLayoutDescription(
new ResourceLayoutElementDescription(
"SurfaceTexture", ResourceKind.TextureReadOnly, ShaderStages.Fragment),
new ResourceLayoutElementDescription(
"SurfaceSampler", ResourceKind.Sampler, ShaderStages.Fragment)));
CreateTexture();
};
Resources.OnDispose = () => {
_surface?.Dispose();
_textureView.Dispose();
_texture.Dispose();
ResourceSet.Dispose();
};
}