From 099763e1e3760f3ca3ff154adb08d9dc87638c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Wed, 25 Aug 2021 22:39:11 +0200 Subject: [PATCH] Added Vertexcount to GeometryBinding and made Indexbuffer optional --- .../src/Platform/DX11/Renderer/Dx11GeometryBinding.bf | 5 +++-- .../src/Platform/DX11/Renderer/Dx11RendererAPI.bf | 7 +++++-- GlitchyEngine/src/Renderer/GeometryBinding.bf | 11 +++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf index 00d320e..d7881b9 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11GeometryBinding.bf @@ -81,8 +81,9 @@ namespace GlitchyEngine.Renderer context.nativeContext.InputAssembler.SetVertexBuffers(0, nativeBuffers.Count, &nativeBuffers, &bufferStrides, &bufferOffsets); context.nativeContext.InputAssembler.SetInputLayout(_vertexLayout.nativeLayout); 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) diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf index dd7b517..e671217 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf @@ -32,10 +32,13 @@ namespace GlitchyEngine.Renderer { _context.nativeContext.ClearDepthStencilView(target.nativeView, (.)clearFlags, depthValue, stencilValue); } - + 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) diff --git a/GlitchyEngine/src/Renderer/GeometryBinding.bf b/GlitchyEngine/src/Renderer/GeometryBinding.bf index d3bfab4..edf1105 100644 --- a/GlitchyEngine/src/Renderer/GeometryBinding.bf +++ b/GlitchyEngine/src/Renderer/GeometryBinding.bf @@ -14,6 +14,9 @@ namespace GlitchyEngine.Renderer internal uint32 _indexCount; internal uint32 _instanceCount; internal PrimitiveTopology _primitiveTopology; + internal uint32 _vertexCount; + + public bool IsIndexed => _indexBuffer != null; public this(GraphicsContext context) { @@ -57,6 +60,14 @@ namespace GlitchyEngine.Renderer set => _instanceCount = value; } + public uint32 VertexCount + { + [Inline] + get => _vertexCount; + [Inline] + set => _vertexCount = value; + } + [Inline] public PrimitiveTopology PrimitiveTopology => _primitiveTopology;