Drawing test quad

This commit is contained in:
Simon Lübeß
2021-01-08 10:38:16 +01:00
parent 1fe678103e
commit 2159f8087a
+71 -37
View File
@@ -69,17 +69,20 @@ namespace GlitchyEngine
} }
VertexLayout _vertexLayout ~ delete _; VertexLayout _vertexLayout ~ delete _;
GeometryBinding _geometryBinding ~ delete _;
VertexBuffer _vertexBuffer ~ delete _; VertexBuffer _vertexBuffer ~ delete _;
IndexBuffer _indexBuffer ~ delete _; IndexBuffer _indexBuffer ~ delete _;
Buffer<ColorRGBA> _cBuffer ~ delete _;
GeometryBinding _quadGeometryBinding ~ delete _;
VertexBuffer _quadVertexBuffer ~ delete _;
IndexBuffer _quadIndexBuffer ~ delete _;
RasterizerState _rasterizerState ~ delete _; RasterizerState _rasterizerState ~ delete _;
VertexShader _vertexShader ~ delete _; VertexShader _vertexShader ~ delete _;
PixelShader _pixelShader ~ delete _; PixelShader _pixelShader ~ delete _;
Buffer<ColorRGBA> _cBuffer ~ delete _;
GeometryBinding _geometryBinding ~ delete _;
private Vector3 CircleCoord(float angle) private Vector3 CircleCoord(float angle)
{ {
@@ -111,36 +114,65 @@ namespace GlitchyEngine
_pixelShader.Buffers.ReplaceBuffer("Constants", _cBuffer); _pixelShader.Buffers.ReplaceBuffer("Constants", _cBuffer);
float pO3 = Math.PI_f / 3.0f; // Create hexagon
VertexColor[?] vertices = .( {
VertexColor(.Zero, Color(255,255,255)), _geometryBinding = new GeometryBinding(_window.Context);
VertexColor(CircleCoord(0), Color(255, 0, 0)), _geometryBinding.SetPrimitiveTopology(.TriangleList);
VertexColor(CircleCoord(pO3), Color(255,255, 0)), _geometryBinding.SetVertexLayout(_vertexLayout);
VertexColor(CircleCoord(pO3*2), Color( 0,255, 0)),
VertexColor(CircleCoord(Math.PI_f), Color( 0,255,255)), float pO3 = Math.PI_f / 3.0f;
VertexColor(CircleCoord(-pO3*2), Color( 0, 0,255)), VertexColor[?] vertices = .(
VertexColor(CircleCoord(-pO3), Color(255, 0,255)), VertexColor(.Zero, Color(255,255,255)),
); VertexColor(CircleCoord(0), Color(255, 0, 0)),
VertexColor(CircleCoord(pO3), Color(255,255, 0)),
VertexColor(CircleCoord(pO3*2), Color( 0,255, 0)),
VertexColor(CircleCoord(Math.PI_f), Color( 0,255,255)),
VertexColor(CircleCoord(-pO3*2), Color( 0, 0,255)),
VertexColor(CircleCoord(-pO3), Color(255, 0,255)),
);
_vertexBuffer = new VertexBuffer(Window.Context, typeof(VertexColor), (.)vertices.Count, .Immutable);
_vertexBuffer.SetData(vertices);
_geometryBinding.SetVertexBufferSlot(_vertexBuffer, 0);
uint16[?] indices = .(
0, 1, 2,
0, 2, 3,
0, 3, 4,
0, 4, 5,
0, 5, 6,
0, 6, 1);
_indexBuffer = new IndexBuffer(Window.Context, (.)indices.Count, .Immutable);
_indexBuffer.SetData(indices);
_geometryBinding.SetIndexBuffer(_indexBuffer);
}
_vertexBuffer = new VertexBuffer(Window.Context, typeof(VertexColor), (.)vertices.Count, .Immutable);//<VertexColor> // Create Quad
_vertexBuffer.SetData(vertices); {
_quadGeometryBinding = new GeometryBinding(_window.Context);
uint16[?] indices = .( _quadGeometryBinding.SetPrimitiveTopology(.TriangleList);
0, 1, 2, _quadGeometryBinding.SetVertexLayout(_vertexLayout);
0, 2, 3,
0, 3, 4, VertexColor[?] vertices = .(
0, 4, 5, VertexColor(Vector3(-0.75f, 0.75f, 0), Color.Blue),
0, 5, 6, VertexColor(Vector3(-0.75f, -0.75f, 0), Color.Blue),
0, 6, 1); VertexColor(Vector3(0.75f, -0.75f, 0), Color.Blue),
VertexColor(Vector3(0.75f, 0.75f, 0), Color.Blue),
_indexBuffer = new IndexBuffer(Window.Context, (.)indices.Count, .Immutable); );
_indexBuffer.SetData(indices);
_quadVertexBuffer = new VertexBuffer(Window.Context, typeof(VertexColor), (.)vertices.Count, .Immutable);
_geometryBinding = new GeometryBinding(_window.Context); _quadVertexBuffer.SetData(vertices);
_geometryBinding.SetVertexBufferSlot(_vertexBuffer, 0); _quadGeometryBinding.SetVertexBufferSlot(_quadVertexBuffer, 0);
_geometryBinding.SetVertexLayout(_vertexLayout);
_geometryBinding.SetPrimitiveTopology(.TriangleList); uint16[?] indices = .(
_geometryBinding.SetIndexBuffer(_indexBuffer); 0, 1, 2,
2, 3, 0);
_quadIndexBuffer = new IndexBuffer(Window.Context, (.)indices.Count, .Immutable);
_quadIndexBuffer.SetData(indices);
_quadGeometryBinding.SetIndexBuffer(_quadIndexBuffer);
}
// Create rasterizer state // Create rasterizer state
GlitchyEngine.Renderer.RasterizerStateDescription rsDesc = .(.Solid, .Back, true); GlitchyEngine.Renderer.RasterizerStateDescription rsDesc = .(.Solid, .Back, true);
@@ -175,17 +207,19 @@ namespace GlitchyEngine
_window.Context.SetRenderTarget(null); _window.Context.SetRenderTarget(null);
_window.Context.BindRenderTargets(); _window.Context.BindRenderTargets();
_geometryBinding.Bind();
_window.Context.SetVertexShader(_vertexShader); _window.Context.SetVertexShader(_vertexShader);
_window.Context.SetPixelShader(_pixelShader);
_window.Context.SetRasterizerState(_rasterizerState); _window.Context.SetRasterizerState(_rasterizerState);
_window.Context.SetViewport(Window.Context.SwapChain.BackbufferViewport); _window.Context.SetViewport(Window.Context.SwapChain.BackbufferViewport);
_window.Context.SetPixelShader(_pixelShader); _geometryBinding.Bind();
_window.Context.DrawIndexed(_geometryBinding.IndexCount); _window.Context.DrawIndexed(_geometryBinding.IndexCount);
_quadGeometryBinding.Bind();
_window.Context.DrawIndexed(_quadGeometryBinding.IndexCount);
} }
for(Layer layer in _layerStack) for(Layer layer in _layerStack)