public SpriteBatchRenderer(IDevice device, IBlobReader blobReader, ICameraFactory cameraFactory) { _device = device; _context = _device.ImmediateContext; _camera = cameraFactory.CreateOrhographicCamera(); _buffer = device.CreateVertexBuffer <Vertex2D>(MaxVertices, BufferUsage.Dynamic, BufferAccessFlags.Write); _indices = device.CreateIndexBuffer(CreateIndices()); _sampler = device.CreateSampler(true); _blendState = device.CreateBlendState(); _cameraBuffer = device.CreateConstantBuffer(new Camera { Transform = _camera.ViewProjection }); using var vertexShaderBlob = blobReader.ReadFromFile("Shaders/VertexShader2D.cso"); _vertexShader = device.CreateVertexShader(vertexShaderBlob); using var pixelShaderBlob = blobReader.ReadFromFile("Shaders/PixelShader2D.cso"); _pixelShader = device.CreatePixelShader(pixelShaderBlob); _inputLayout = device.CreateInputLayout(new VertexLayout(3).Append("Position", VertexLayoutTypes.Position2D).Append("Textures", VertexLayoutTypes.Texture2D).Append("Color", VertexLayoutTypes.Float4Color), vertexShaderBlob); }