Added Vertexcount to GeometryBinding and made Indexbuffer optional

This commit is contained in:
Simon Lübeß
2021-08-25 22:39:11 +02:00
parent a8bef51834
commit 099763e1e3
3 changed files with 19 additions and 4 deletions
@@ -82,7 +82,8 @@ namespace GlitchyEngine.Renderer
context.nativeContext.InputAssembler.SetInputLayout(_vertexLayout.nativeLayout); context.nativeContext.InputAssembler.SetInputLayout(_vertexLayout.nativeLayout);
context.nativeContext.InputAssembler.SetPrimitiveTopology((.)_primitiveTopology); context.nativeContext.InputAssembler.SetPrimitiveTopology((.)_primitiveTopology);
context.nativeContext.InputAssembler.SetIndexBuffer(_indexBuffer.nativeBuffer, _indexBuffer.Format == .Index32Bit ? .R32_UInt : .R16_UInt, _indexByteOffset); if(_indexBuffer != null)
context.nativeContext.InputAssembler.SetIndexBuffer(_indexBuffer.nativeBuffer, _indexBuffer.Format == .Index32Bit ? .R32_UInt : .R16_UInt, _indexByteOffset);
} }
public void Unbind(GraphicsContext context = null) public void Unbind(GraphicsContext context = null)
@@ -35,7 +35,10 @@ namespace GlitchyEngine.Renderer
public override void DrawIndexed(GeometryBinding geometry) public override void DrawIndexed(GeometryBinding geometry)
{ {
_context.DrawIndexed(geometry.IndexCount, geometry.IndexByteOffset, 0); if(geometry.IsIndexed)
_context.DrawIndexed(geometry.IndexCount, geometry.IndexByteOffset, 0);
else
_context.Draw(geometry.VertexCount, 0);
} }
public override void DrawIndexedInstanced(GeometryBinding geometry) public override void DrawIndexedInstanced(GeometryBinding geometry)
@@ -14,6 +14,9 @@ namespace GlitchyEngine.Renderer
internal uint32 _indexCount; internal uint32 _indexCount;
internal uint32 _instanceCount; internal uint32 _instanceCount;
internal PrimitiveTopology _primitiveTopology; internal PrimitiveTopology _primitiveTopology;
internal uint32 _vertexCount;
public bool IsIndexed => _indexBuffer != null;
public this(GraphicsContext context) public this(GraphicsContext context)
{ {
@@ -57,6 +60,14 @@ namespace GlitchyEngine.Renderer
set => _instanceCount = value; set => _instanceCount = value;
} }
public uint32 VertexCount
{
[Inline]
get => _vertexCount;
[Inline]
set => _vertexCount = value;
}
[Inline] [Inline]
public PrimitiveTopology PrimitiveTopology => _primitiveTopology; public PrimitiveTopology PrimitiveTopology => _primitiveTopology;