using OpenTK.Graphics.OpenGL; namespace Engine.Renderer.Framebuffer; public class Renderbuffer : OpenGlObject { public int Width { get; private set; } public int Height { get; private set; } private readonly RenderbufferStorage _format; public Renderbuffer(int width, int height, RenderbufferStorage format) { Width = width; Height = height; _format = format; GL.CreateRenderbuffers(1, out int handle); Handle = handle; GL.NamedRenderbufferStorage(Handle, _format, Width, Height); } public void Resize(int width, int height) { if (Width == width && Height == height) return; Width = width; Height = height; GL.NamedRenderbufferStorage(Handle, _format, Width, Height); } internal override void Bind() { GL.BindRenderbuffer(RenderbufferTarget.Renderbuffer, Handle); } internal override void Unbind() { GL.BindRenderbuffer(RenderbufferTarget.Renderbuffer, 0); } protected override void Destroy() { GL.DeleteRenderbuffer(Handle); } }