49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
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);
|
|
}
|
|
} |