sKit  0.0.9
PipelineBuilder.hpp
Go to the documentation of this file.
1 #pragma oncepipeline
2 
3 #include <SDL3/SDL_gpu.h>
4 
5 #include <vector>
6 
7 namespace sKit {
8 namespace SDL {
9 
21  public:
23  auto shaders(SDL_GPUShader* vertexShader, SDL_GPUShader* fragmentShader)
24  -> PipelineBuilder&;
25 
35  auto addBuffer(
36  Uint32 slot,
37  Uint32 stride,
38  SDL_GPUVertexInputRate inputRate = SDL_GPU_VERTEXINPUTRATE_VERTEX
39  ) -> PipelineBuilder&;
40 
50  auto addAttribute(
51  Uint32 location,
52  Uint32 bufferSlot,
53  Uint32 offset = 0,
54  SDL_GPUVertexElementFormat format = SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3
55  ) -> PipelineBuilder&;
56 
62  auto addColorTarget(SDL_GPUTextureFormat format) -> PipelineBuilder&;
63 
64  auto cullMode(SDL_GPUCullMode cullMode) -> PipelineBuilder&;
65 
67  auto build(SDL_GPUDevice* device) -> SDL_GPUGraphicsPipeline*;
68 
69  private:
70  SDL_GPUShader *vs_, *fs_;
71  std::vector<SDL_GPUVertexBufferDescription> bufferDescs_;
72  std::vector<SDL_GPUVertexAttribute> vertexAttribs_;
73  std::vector<SDL_GPUColorTargetDescription> colorTargetDescs_;
74  SDL_GPUCullMode cullMode_ = SDL_GPU_CULLMODE_NONE;
75  SDL_GPUFrontFace frontFace_ = SDL_GPU_FRONTFACE_COUNTER_CLOCKWISE;
76 };
77 
78 } // namespace SDL
79 
80 } // namespace sKit
sKit::SDL::PipelineBuilder::addBuffer
auto addBuffer(Uint32 slot, Uint32 stride, SDL_GPUVertexInputRate inputRate=SDL_GPU_VERTEXINPUTRATE_VERTEX) -> PipelineBuilder &
Definition: PipelineBuilder.cpp:18
sKit::SDL::PipelineBuilder::build
auto build(SDL_GPUDevice *device) -> SDL_GPUGraphicsPipeline *
Definition: PipelineBuilder.cpp:56
sKit::SDL::PipelineBuilder::shaders
auto shaders(SDL_GPUShader *vertexShader, SDL_GPUShader *fragmentShader) -> PipelineBuilder &
Tells the builder which shaders it should use to create the pipeline.
Definition: PipelineBuilder.cpp:9
sKit::SDL::PipelineBuilder
SDL_GPUGraphicsPipeline builder class
Definition: PipelineBuilder.hpp:20
sKit
Definition: camera.hpp:8
sKit::SDL::PipelineBuilder::addColorTarget
auto addColorTarget(SDL_GPUTextureFormat format) -> PipelineBuilder &
Definition: PipelineBuilder.cpp:44
sKit::SDL::PipelineBuilder::addAttribute
auto addAttribute(Uint32 location, Uint32 bufferSlot, Uint32 offset=0, SDL_GPUVertexElementFormat format=SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3) -> PipelineBuilder &
Definition: PipelineBuilder.cpp:29
sKit::SDL::PipelineBuilder::cullMode
auto cullMode(SDL_GPUCullMode cullMode) -> PipelineBuilder &
Definition: PipelineBuilder.cpp:51