29 lines
806 B
C#
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);
|
|
}
|
|
}
|