DX11: Automatically validate input layouts against vertex shaders

This commit is contained in:
Simon Lübeß
2022-05-26 11:27:02 +02:00
parent 28f1fad464
commit 164d420a25
11 changed files with 101 additions and 49 deletions
@@ -79,6 +79,8 @@ namespace GlitchyEngine.Renderer
public extern void Draw(uint32 vertexCount, uint32 startVertexIndex = 0);
public extern void DrawIndexed(uint32 indexCount, uint32 startIndexLocation = 0, int32 vertexOffset = 0);
public extern void DrawIndexedInstanced(uint32 indexCountPerInstance, uint32 instanceCount, uint32 startIndexLocation, int32 baseVertexLocation, uint32 startInstanceLocation);
public void SetIndexBuffer(IndexBuffer indexBuffer, uint32 byteOffset = 0)
{
+2 -2
View File
@@ -210,7 +210,7 @@ namespace GlitchyEngine.Renderer
VertexElement[] vertexElements = new VertexElement[1];
vertexElements[0] = .(.R32G32B32_Float, "POSITION");
VertexLayout layout = new VertexLayout(vertexElements, true, LineEffect.VertexShader);
VertexLayout layout = new VertexLayout(vertexElements, true);
LineGeometry.SetVertexLayout(layout..ReleaseRefNoDelete());
}
@@ -258,7 +258,7 @@ namespace GlitchyEngine.Renderer
VertexElement(.R32G32_Float, "TEXCOORD")
);
using (var quadBatchLayout = new VertexLayout(vertexElements, true, TestFullscreenEffect.VertexShader))
using (var quadBatchLayout = new VertexLayout(vertexElements, true))
{
s_fullscreenQuadGeometry.SetVertexLayout(quadBatchLayout);
}
+3 -3
View File
@@ -184,7 +184,7 @@ namespace GlitchyEngine.Renderer
0, 1, 2,
2, 3, 0
);
quadIndices.SetData(indices);
s_quadGeometry.SetIndexBuffer(quadIndices);
}
@@ -211,7 +211,7 @@ namespace GlitchyEngine.Renderer
s_quadBatchBinding = new GeometryBinding();
s_quadBatchBinding.SetPrimitiveTopology(.TriangleList);
using (var quadBatchLayout = new VertexLayout(vertexElements, true, s_batchEffect.VertexShader))
using (var quadBatchLayout = new VertexLayout(vertexElements, true))
{
s_quadBatchBinding.SetVertexLayout(quadBatchLayout);
}
@@ -238,7 +238,7 @@ namespace GlitchyEngine.Renderer
s_circleBatchBinding = new GeometryBinding();
s_circleBatchBinding.SetPrimitiveTopology(.TriangleList);
using (var circleBatchLayout = new VertexLayout(vertexElements, true, s_circleBatchEffect.VertexShader))
using (var circleBatchLayout = new VertexLayout(vertexElements, true))
{
s_circleBatchBinding.SetVertexLayout(circleBatchLayout);
}
+6 -3
View File
@@ -3,7 +3,6 @@ using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
/**
* Type of data contained in an input slot.
*/
@@ -86,6 +85,12 @@ namespace GlitchyEngine.Renderer
public VertexElement[] Elements => _elements;
public this(VertexElement[] elements, bool ownsElements)
{
_elements = elements;
_ownsElements = ownsElements;
}
public ~this()
{
if(_ownsElements)
@@ -99,8 +104,6 @@ namespace GlitchyEngine.Renderer
delete _elements;
}
}
protected extern void CreateNativeLayout();
}
public interface IVertexData