2024-06-04 23:04:19 +00:00
|
|
|
using System.Collections.Concurrent;
|
|
|
|
|
2024-06-05 00:24:25 +00:00
|
|
|
namespace MoonWorks.Graphics;
|
|
|
|
|
|
|
|
internal class RenderPassPool
|
2024-06-04 23:04:19 +00:00
|
|
|
{
|
2024-06-05 00:24:25 +00:00
|
|
|
private ConcurrentQueue<RenderPass> RenderPasses = new ConcurrentQueue<RenderPass>();
|
2024-06-04 23:04:19 +00:00
|
|
|
|
2024-06-05 00:24:25 +00:00
|
|
|
public RenderPass Obtain()
|
|
|
|
{
|
|
|
|
if (RenderPasses.TryDequeue(out var renderPass))
|
2024-06-04 23:04:19 +00:00
|
|
|
{
|
2024-06-05 00:24:25 +00:00
|
|
|
return renderPass;
|
2024-06-04 23:04:19 +00:00
|
|
|
}
|
2024-06-05 00:24:25 +00:00
|
|
|
else
|
2024-06-04 23:04:19 +00:00
|
|
|
{
|
2024-06-05 00:24:25 +00:00
|
|
|
return new RenderPass();
|
2024-06-04 23:04:19 +00:00
|
|
|
}
|
|
|
|
}
|
2024-06-05 00:24:25 +00:00
|
|
|
|
|
|
|
public void Return(RenderPass renderPass)
|
|
|
|
{
|
|
|
|
RenderPasses.Enqueue(renderPass);
|
|
|
|
}
|
2024-06-04 23:04:19 +00:00
|
|
|
}
|