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
23public:
24 explicit CustomMesh(
25 const ossia::mesh_list& g, const ossia::geometry_filter_list_ptr& f);
26
27 [[nodiscard]]
28 QRhiBuffer* init_vbo(const ossia::geometry::cpu_buffer& buf, QRhi& rhi) const noexcept;
29
30 [[nodiscard]]
31 QRhiBuffer* init_vbo(const ossia::geometry::gpu_buffer& buf, QRhi& rhi) const noexcept;
32 [[nodiscard]]
33 QRhiBuffer*
34 init_index(const ossia::geometry::cpu_buffer& buf, QRhi& rhi) const noexcept;
35
36 [[nodiscard]]
37 QRhiBuffer*
38 init_index(const ossia::geometry::gpu_buffer& buf, QRhi& rhi) const noexcept;
39
40 [[nodiscard]] MeshBuffers init(QRhi& rhi) const noexcept override;
41
42 void update_vbo(
43 const ossia::geometry::cpu_buffer& vtx_buf, MeshBuffers& meshbuf,
44 QRhiResourceUpdateBatch& rb) const noexcept;
45
46 void update_vbo(
47 const ossia::geometry::gpu_buffer& vtx_buf, MeshBuffers& meshbuf,
48 QRhiResourceUpdateBatch& rb) const noexcept;
49
50 void update_index(
51 const ossia::geometry::cpu_buffer& idx_buf, MeshBuffers& meshbuf,
52 QRhiResourceUpdateBatch& rb) const noexcept;
53
54 void update_index(
55 const ossia::geometry::gpu_buffer& idx_buf, MeshBuffers& meshbuf,
56 QRhiResourceUpdateBatch& rb) const noexcept;
57 void update(MeshBuffers& meshbuf, QRhiResourceUpdateBatch& rb) const noexcept override;
58 Flags flags() const noexcept override;
59
60 void clear();
61
62 void preparePipeline(QRhiGraphicsPipeline& pip) const noexcept override;
63
64 void reload(const ossia::mesh_list& ml, const ossia::geometry_filter_list_ptr& f);
65
66 void draw(const MeshBuffers& bufs, QRhiCommandBuffer& cb) const noexcept override;
67
68 const char* defaultVertexShader() const noexcept override;
69};
70
71}
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:270
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:12
Definition Mesh.hpp:15
Data model for meshes.
Definition Mesh.hpp:23