34 lines
691 B
C#
34 lines
691 B
C#
using System;
|
|
using System.Collections.Concurrent;
|
|
|
|
namespace Nerfed.Runtime.Graphics;
|
|
|
|
internal class CommandBufferPool
|
|
{
|
|
private GraphicsDevice GraphicsDevice;
|
|
private ConcurrentQueue<CommandBuffer> CommandBuffers = new ConcurrentQueue<CommandBuffer>();
|
|
|
|
public CommandBufferPool(GraphicsDevice graphicsDevice)
|
|
{
|
|
GraphicsDevice = graphicsDevice;
|
|
}
|
|
|
|
public CommandBuffer Obtain()
|
|
{
|
|
if (CommandBuffers.TryDequeue(out CommandBuffer commandBuffer))
|
|
{
|
|
return commandBuffer;
|
|
}
|
|
else
|
|
{
|
|
return new CommandBuffer(GraphicsDevice);
|
|
}
|
|
}
|
|
|
|
public void Return(CommandBuffer commandBuffer)
|
|
{
|
|
commandBuffer.Handle = IntPtr.Zero;
|
|
CommandBuffers.Enqueue(commandBuffer);
|
|
}
|
|
}
|