VertexBuffer is no longer generic

This commit is contained in:
Simon Lübeß
2021-01-06 19:11:13 +01:00
parent 523da5536b
commit bfb6bc57f4
2 changed files with 14 additions and 13 deletions
+2 -2
View File
@@ -68,7 +68,7 @@ namespace GlitchyEngine
} }
} }
VertexBuffer<VertexColor> _vertexBuffer ~ delete _; VertexBuffer _vertexBuffer ~ delete _;
IndexBuffer _indexBuffer ~ delete _; IndexBuffer _indexBuffer ~ delete _;
Buffer<ColorRGBA> _cBuffer ~ delete _; Buffer<ColorRGBA> _cBuffer ~ delete _;
@@ -120,7 +120,7 @@ namespace GlitchyEngine
VertexColor(CircleCoord(-pO3), Color(255, 0,255)), VertexColor(CircleCoord(-pO3), Color(255, 0,255)),
); );
_vertexBuffer = new VertexBuffer<VertexColor>(Window.Context, (.)vertices.Count, .Immutable); _vertexBuffer = new VertexBuffer(Window.Context, typeof(VertexColor), (.)vertices.Count, .Immutable);//<VertexColor>
_vertexBuffer.SetData(vertices); _vertexBuffer.SetData(vertices);
uint16[?] indices = .( uint16[?] indices = .(
+12 -11
View File
@@ -3,11 +3,11 @@ namespace GlitchyEngine.Renderer
{ {
public struct VertexBufferBinding public struct VertexBufferBinding
{ {
public Buffer Buffer; public VertexBuffer Buffer;
public uint32 Stride; public uint32 Stride;
public uint32 Offset; public uint32 Offset;
public this(Buffer buffer, uint32 stride, uint32 offset = 0) public this(VertexBuffer buffer, uint32 stride, uint32 offset = 0)
{ {
Buffer = buffer; Buffer = buffer;
Stride = stride; Stride = stride;
@@ -15,28 +15,29 @@ namespace GlitchyEngine.Renderer
} }
} }
public class VertexBuffer<T> : Buffer where T: struct, IVertexData public class VertexBuffer : Buffer
{ {
private VertexBufferBinding _defaultBinding; private VertexBufferBinding _defaultBinding;
private Type _vertexType;
public Type VertexDataType => _vertexType;
public VertexBufferBinding Binding => _defaultBinding; public VertexBufferBinding Binding => _defaultBinding;
public this(GraphicsContext context, uint32 vertexCount, Usage usage = .Default, CPUAccessFlags cpuAccess = .None) : base(context) public this(GraphicsContext context, Type vertexType, uint32 vertexCount, Usage usage = .Default, CPUAccessFlags cpuAccess = .None) : base(context)
{ {
_vertexType = vertexType;
_description = .(){ _description = .(){
Size = ((uint32)sizeof(T) * vertexCount), Size = ((uint32)_vertexType.Size * vertexCount),
Usage = usage, Usage = usage,
CPUAccess = cpuAccess, CPUAccess = cpuAccess,
BindFlags = .Vertex, BindFlags = .Vertex,
MiscFlags = .None MiscFlags = .None
}; };
_defaultBinding = .(this, (.)sizeof(T), 0); _defaultBinding = .(this, (.)_vertexType.Size, 0);
}
public Result<void> SetData(Span<T> data, uint32 destinationVertexOffset = 0, MapType mapType = .Write)
{
return SetData<T>(data, destinationVertexOffset * (uint32)sizeof(T));
} }
[Inline] [Inline]