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 _;
Buffer<ColorRGBA> _cBuffer ~ delete _;
@@ -120,7 +120,7 @@ namespace GlitchyEngine
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);
uint16[?] indices = .(
+12 -11
View File
@@ -3,11 +3,11 @@ namespace GlitchyEngine.Renderer
{
public struct VertexBufferBinding
{
public Buffer Buffer;
public VertexBuffer Buffer;
public uint32 Stride;
public uint32 Offset;
public this(Buffer buffer, uint32 stride, uint32 offset = 0)
public this(VertexBuffer buffer, uint32 stride, uint32 offset = 0)
{
Buffer = buffer;
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 Type _vertexType;
public Type VertexDataType => _vertexType;
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 = .(){
Size = ((uint32)sizeof(T) * vertexCount),
Size = ((uint32)_vertexType.Size * vertexCount),
Usage = usage,
CPUAccess = cpuAccess,
BindFlags = .Vertex,
MiscFlags = .None
};
_defaultBinding = .(this, (.)sizeof(T), 0);
}
public Result<void> SetData(Span<T> data, uint32 destinationVertexOffset = 0, MapType mapType = .Write)
{
return SetData<T>(data, destinationVertexOffset * (uint32)sizeof(T));
_defaultBinding = .(this, (.)_vertexType.Size, 0);
}
[Inline]