1 | #pragma once |
---|---|
2 | |
3 | #include <iostream> |
4 | #include <fstream> |
5 | #include <stdexcept> |
6 | #include <algorithm> |
7 | #include <chrono> |
8 | #include <vector> |
9 | #include <cstring> |
10 | #include <cstdlib> |
11 | #include <cstdint> |
12 | #include <array> |
13 | #include <optional> |
14 | #include <set> |
15 | #include <memory> |
16 | |
17 | #include "taichi/ui/utils/utils.h" |
18 | #include "taichi/ui/backends/vulkan/vertex.h" |
19 | #include "taichi/ui/backends/vulkan/app_context.h" |
20 | #include "taichi/ui/backends/vulkan/swap_chain.h" |
21 | #include "taichi/ui/backends/vulkan/renderable.h" |
22 | #include "taichi/ui/common/canvas_base.h" |
23 | |
24 | #include "taichi/ui/backends/vulkan/gui.h" |
25 | #include "taichi/ui/backends/vulkan/renderer.h" |
26 | |
27 | #include "taichi/ui/backends/vulkan/renderables/set_image.h" |
28 | #include "taichi/ui/backends/vulkan/renderables/triangles.h" |
29 | #include "taichi/ui/backends/vulkan/renderables/mesh.h" |
30 | #include "taichi/ui/backends/vulkan/renderables/particles.h" |
31 | #include "taichi/ui/backends/vulkan/renderables/circles.h" |
32 | #include "taichi/ui/backends/vulkan/renderables/lines.h" |
33 | |
34 | namespace taichi::ui { |
35 | |
36 | namespace vulkan { |
37 | |
38 | class TI_DLL_EXPORT Canvas final : public CanvasBase { |
39 | public: |
40 | explicit Canvas(Renderer *renderer); |
41 | |
42 | void set_background_color(const glm::vec3 &color) override; |
43 | |
44 | void set_image(const SetImageInfo &info) override; |
45 | |
46 | void set_image(taichi::lang::Texture *tex) override; |
47 | |
48 | void triangles(const TrianglesInfo &info) override; |
49 | |
50 | void circles(const CirclesInfo &info) override; |
51 | |
52 | void lines(const LinesInfo &info) override; |
53 | |
54 | void scene(SceneBase *scene_base) override; |
55 | |
56 | private: |
57 | Renderer *renderer_; |
58 | }; |
59 | |
60 | } // namespace vulkan |
61 | |
62 | } // namespace taichi::ui |
63 |