Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
CommandBuffer.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "Program.h"
7#include <functional>
8#include <math/math.hpp>
9#include <memory>
10
11class Texture;
12class Pipeline;
13class VertexBuffer;
14class IndexBuffer;
15struct Viewport;
16
18{
19 enum
20 {
21 Color = 1 << 0,
22 Depth = 1 << 1,
23 Stencil = 1 << 2
24 };
25};
26
31{
32public:
33 static std::shared_ptr<CommandBuffer> create();
34
38 virtual void begin() = 0;
39
43 virtual void end() = 0;
44
45 virtual void begin_render_pass() = 0;
46 virtual void end_render_pass() = 0;
47
48 virtual void set_viewport(const Viewport& viewport) = 0;
49 virtual void set_pipeline(std::shared_ptr<Pipeline> pipeline) = 0;
50 virtual void set_vertex_buffer(std::shared_ptr<VertexBuffer> vertex_buffer) = 0;
51 virtual void set_index_buffer(std::shared_ptr<IndexBuffer> index_buffer) = 0;
52 virtual void set_texture(std::shared_ptr<Texture> texture, unsigned int slot) = 0;
53
61 virtual void clear(uint8_t flags) = 0;
62
68 virtual void set_clear_color(const Vector4& color) = 0;
69
75 virtual void set_clear_depth(float depth) = 0;
76
82 virtual void set_clear_stencil(uint32_t value) = 0;
83
84 virtual void draw(uint32_t vertex_count, uint32_t first_vertex = 0) = 0;
85 virtual void draw_indexed(uint32_t index_count, uint32_t first_index = 0) = 0;
86};
命令缓冲区.
Definition: CommandBuffer.h:31
virtual void set_clear_stencil(uint32_t value)=0
设置清空模板缓冲区的默认值.
virtual void begin()=0
开始记录命令.
virtual void set_clear_color(const Vector4 &color)=0
设置清空颜色缓冲区的默认值.
virtual void clear(uint8_t flags)=0
清空缓冲区.
virtual void end()=0
结束记录命令.
virtual void set_clear_depth(float depth)=0
设置清空深度缓冲区的默认值.
索引缓冲区.
Definition: IndexBuffer.h:16
图形管线.
Definition: Pipeline.h:63
纹理.
Definition: Texture.h:31
顶点缓冲区.
Definition: VertexBuffer.h:16
Definition: CommandBuffer.h:18
视口.
Definition: Viewport.hpp:12