qstbak/Auspex/Auspex.Rendering.Direct3D/HlslShaderData.cs
2026-08-17 20:25:32 +10:00

29 lines
806 B
C#

using System;
using TerraFX.Interop.DirectX;
namespace Auspex.Rendering.Direct3D;
internal abstract class HlslShaderData<TElement> : IDisposable where TElement : unmanaged
{
private protected readonly GpuBuffer<TElement> _buffer;
protected HlslShaderData(string name, FrameRenderContext ctx, int maxCount, bool dynamic)
{
_buffer = new GpuBuffer<TElement>(name, ctx, maxCount, 1u, dynamic);
}
public void Dispose()
{
_buffer.Dispose();
GC.SuppressFinalize(this);
}
private protected unsafe void DrawVertices(FrameRenderContext ctx, int first, int count)
{
ID3D11Buffer* buffer = _buffer.Buffer;
uint elementSize = (uint)_buffer.ElementSize;
uint num = 0u;
ctx.Context->IASetVertexBuffers(0u, 1u, &buffer, &elementSize, &num);
ctx.Context->Draw((uint)count, (uint)first);
}
}