LkEngine 0.1.2
 
Loading...
Searching...
No Matches
Pipeline.h
Go to the documentation of this file.
1
5#pragma once
6
8
9#include "PipelineSpecification.h"
10
11namespace LkEngine {
12
13 class LShader;
14
21 {
22 uint64_t InputAssemblyVertices = 0;
23 uint64_t InputAssemblyPrimitives = 0;
24 uint64_t VertexShaderInvocations = 0;
25 uint64_t ClippingInvocations = 0;
26 uint64_t ClippingPrimitives = 0;
27 uint64_t FragmentShaderInvocations = 0;
28 uint64_t ComputeShaderInvocations = 0;
29 };
30
36 class LPipeline : public LObject
37 {
38 public:
39 virtual ~LPipeline() = default;
40
41 virtual FPipelineSpecification& GetSpecification() = 0;
42 virtual const FPipelineSpecification& GetSpecification() const = 0;
43 virtual void Invalidate() = 0;
44
45 virtual TObjectPtr<LShader> GetShader() const = 0;
46 virtual void SetLayout(const FVertexBufferLayout& InLayout) = 0;
47
48 virtual void BindTextureArray(const LRendererID InRendererID) = 0;
49
53 static TObjectPtr<LPipeline> Create(const FPipelineSpecification& InSpecification);
54
55 private:
57 };
58
59}
Core header.
Definition Object.h:46
Definition Pipeline.h:37
static TObjectPtr< LPipeline > Create(const FPipelineSpecification &InSpecification)
Factory function.
Definition Pipeline.cpp:13
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
uint32_t LRendererID
Definition CoreTypes.h:30
Definition Asset.h:11
Definition PipelineSpecification.h:21
Definition Pipeline.h:21
Definition VertexBufferLayout.h:124