Added GeometryBinding refcounting

This commit is contained in:
Simon Lübeß
2021-02-20 14:52:51 +01:00
parent 9ae376f572
commit 78af9e736e
2 changed files with 33 additions and 19 deletions
+15 -1
View File
@@ -3,7 +3,7 @@ using System.Collections;
namespace GlitchyEngine.Renderer
{
public class GeometryBinding
public class GeometryBinding : RefCounted
{
internal GraphicsContext _context ~ _?.ReleaseRef();
@@ -19,6 +19,16 @@ namespace GlitchyEngine.Renderer
_context = context..AddRef();
}
public ~this()
{
for(let binding in _vertexBuffers)
{
binding.Buffer?.ReleaseRef();
}
_indexBuffer?.ReleaseRef();
}
public VertexBufferBinding GetVertexBuffer(uint32 slot)
{
return _vertexBuffers[slot];
@@ -46,6 +56,7 @@ namespace GlitchyEngine.Renderer
public void SetVertexBufferSlot(VertexBufferBinding vertexBufferBinding, uint32 slot)
{
_vertexBuffers.Add(vertexBufferBinding);
vertexBufferBinding.Buffer.AddRef();
PlatformSetVertexBuffer(vertexBufferBinding, slot);
}
@@ -70,7 +81,10 @@ namespace GlitchyEngine.Renderer
public void SetIndexBuffer(IndexBuffer indexBuffer, uint32 byteOffset = 0, uint32 indexCount = (.)-1)
{
_indexBuffer?.ReleaseRef();
_indexBuffer = indexBuffer;
_indexBuffer.AddRef();
_indexByteOffset = byteOffset;
if(indexCount == (.)-1)