Files
GhostEngine/Ghost.Graphics/D3D12/D3D12RenderTarget.cs
Misaki 5385141f14 Added new RHI abstraction layer;
Added new console debug page to UnitTest;
2025-08-25 10:48:59 +09:00

41 lines
1.1 KiB
C#

using Ghost.Graphics.RHI;
using Win32;
using Win32.Graphics.Direct3D12;
namespace Ghost.Graphics.D3D12;
/// <summary>
/// D3D12 implementation of render target interface
/// Supports either color OR depth rendering, not both
/// </summary>
internal unsafe class D3D12RenderTarget : IRenderTarget
{
private readonly D3D12Texture _target;
private bool _disposed;
public uint Width { get; }
public uint Height { get; }
public RenderTargetType Type { get; }
public ITexture Target => _target;
public D3D12RenderTarget(ComPtr<ID3D12Device14> device, D3D12DescriptorAllocator descriptorAllocator, RenderTargetDesc desc)
{
Width = desc.Width;
Height = desc.Height;
Type = desc.Type;
// Create the target texture based on type
var usage = Type == RenderTargetType.Color ? TextureUsage.RenderTarget : TextureUsage.DepthStencil;
var textureDesc = new TextureDesc(desc.Width, desc.Height, desc.Format, 1, usage);
_target = new D3D12Texture(device, textureDesc);
}
public void Dispose()
{
if (_disposed) return;
_target?.Dispose();
_disposed = true;
}
}