Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
Pipeline.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "PipelineLayout.h"
7#include "VertexFormat.h"
8#include "Viewport.hpp"
9#include <memory>
10
11class Program;
12class VertexBuffer;
13
17enum class PolygonMode
18{
19 Fill,
20 Wireframe
21};
22
26enum class CullMode
27{
28 Disabled,
29 Front,
30 Back,
31};
32
33enum class CompareOp
34{
35 AlwaysPass,
36 NeverPass,
37 Less,
38 Equal,
39 LessEqual,
40 Greater,
41 NotEqual,
42 GreaterEqual,
43};
44
46{
47 PolygonMode polygonMode = PolygonMode::Fill;
48 CullMode cullMode = CullMode::Disabled;
49 float lineWidth = 1.0f;
50};
51
53{
54 bool enableTest = true;
55 bool enableWrite = true;
56 CompareOp compareOp = CompareOp::Less;
57};
58
63{
64public:
66 {
67 PipelineLayout layout;
68 VertexFormat vertexFormat;
69 std::shared_ptr<Program> program;
70 std::vector<Viewport> viewports;
71
72 RasterizerDescriptor rasterizer;
73 DepthDescriptor depth;
74 };
75
76 [[nodiscard]] static std::shared_ptr<Pipeline> create(const Descriptor& desc);
77
78 virtual void bind() = 0;
79
80protected:
81 Pipeline(const Descriptor& desc);
82 virtual ~Pipeline() = default;
83
84 Descriptor desc;
85};
图形管线.
Definition: Pipeline.h:63
图形管线绑定布局.
Definition: PipelineLayout.h:15
着色器程序.
Definition: Program.h:21
顶点缓冲区.
Definition: VertexBuffer.h:16
顶点格式布局.
Definition: VertexFormat.h:15
Definition: Pipeline.h:53
Definition: Pipeline.h:66
Definition: Pipeline.h:46