Unity-DebugX/Runtime/Internal/CommandBufferExecutors.cs
2025-02-26 13:53:19 +08:00

43 lines
1.4 KiB
C#

using System;
using UnityEngine;
using UnityEngine.Rendering;
namespace DCFApixels.DebugXCore.Internal
{
internal interface ICommandBufferExecutor
{
void Execute(CommandBuffer cb);
}
internal class CommandBufferExecutorSRP : ICommandBufferExecutor
{
[ThreadStatic]
private static CommandBufferExecutorSRP _instance = new CommandBufferExecutorSRP();
public static CommandBufferExecutorSRP GetInstance(ScriptableRenderContext context)
{
if (_instance == null) { _instance = new CommandBufferExecutorSRP(); }
_instance.RenderContext = context;
return _instance;
}
public ScriptableRenderContext RenderContext;
private CommandBufferExecutorSRP() { }
public void Execute(CommandBuffer cb)
{
RenderContext.ExecuteCommandBuffer(cb);
}
}
internal class CommandBufferExecutorBRP : ICommandBufferExecutor
{
[ThreadStatic]
private static CommandBufferExecutorBRP _instance = new CommandBufferExecutorBRP();
public static CommandBufferExecutorBRP GetInstance()
{
if (_instance == null) { _instance = new CommandBufferExecutorBRP(); }
return _instance;
}
private CommandBufferExecutorBRP() { }
public void Execute(CommandBuffer cb)
{
Graphics.ExecuteCommandBuffer(cb);
}
}
}