Loading...
Searching...
No Matches
CustomMesh.hpp
1#pragma once
2#include <Gfx/Graph/Mesh.hpp>
3
4#include <ossia/dataflow/geometry_port.hpp>
5
6#include <QtGui/private/qrhi_p.h>
7
8namespace score::gfx
9{
10
12{
13 ossia::mesh_list geom;
14
15 using pip = QRhiGraphicsPipeline;
16 pip::Topology topology = pip::Topology::TriangleStrip;
17 pip::CullMode cullMode = pip::CullMode::None;
18 pip::FrontFace frontFace = pip::FrontFace::CW;
19
20 ossia::small_vector<QRhiVertexInputBinding, 2> vertexBindings;
21 ossia::small_vector<QRhiVertexInputAttribute, 2> vertexAttributes;
22
23 ossia::small_vector<QRhiBuffer*, 2> buffers;
24 QRhiBuffer* index{};
25
26public:
27 explicit CustomMesh(
28 const ossia::mesh_list& g, const ossia::geometry_filter_list_ptr& f);
29
30 [[nodiscard]]
31 QRhiBuffer* init_vbo(const ossia::geometry::cpu_buffer& buf, QRhi& rhi) const noexcept;
32
33 [[nodiscard]]
34 QRhiBuffer* init_vbo(const ossia::geometry::gpu_buffer& buf, QRhi& rhi) const noexcept;
35 [[nodiscard]]
36 QRhiBuffer*
37 init_index(const ossia::geometry::cpu_buffer& buf, QRhi& rhi) const noexcept;
38
39 [[nodiscard]]
40 QRhiBuffer*
41 init_index(const ossia::geometry::gpu_buffer& buf, QRhi& rhi) const noexcept;
42
43 [[nodiscard]] MeshBuffers init(QRhi& rhi) const noexcept override;
44
45 void update_vbo(
46 int buffer_index, const ossia::geometry::cpu_buffer& vtx_buf, MeshBuffers& meshbuf,
47 QRhiResourceUpdateBatch& rb) const noexcept;
48
49 void update_vbo(
50 int buffer_index, const ossia::geometry::gpu_buffer& vtx_buf, MeshBuffers& meshbuf,
51 QRhiResourceUpdateBatch& rb) const noexcept;
52
53 void update_index(
54 int buffer_index, const ossia::geometry::cpu_buffer& idx_buf, MeshBuffers& meshbuf,
55 QRhiResourceUpdateBatch& rb) const noexcept;
56
57 void update_index(
58 int buffer_index, const ossia::geometry::gpu_buffer& idx_buf, MeshBuffers& meshbuf,
59 QRhiResourceUpdateBatch& rb) const noexcept;
60 void update(QRhi& rhi, MeshBuffers& output_meshbuf, QRhiResourceUpdateBatch& rb)
61 const noexcept override;
62 Flags flags() const noexcept override;
63
64 void clear();
65
66 void preparePipeline(QRhiGraphicsPipeline& pip) const noexcept override;
67
68 void reload(const ossia::mesh_list& ml, const ossia::geometry_filter_list_ptr& f);
69
70 void draw(const MeshBuffers& bufs, QRhiCommandBuffer& cb) const noexcept override;
71
72 const char* defaultVertexShader() const noexcept override;
73};
74
75}
Definition CustomMesh.hpp:12
const char * defaultVertexShader() const noexcept override
A basic vertex shader that is going to work with this mesh.
Definition CustomMesh.cpp:377
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:12
Definition Mesh.hpp:23
Data model for meshes.
Definition Mesh.hpp:30