3#include <score/tools/std/String.hpp>
7#include <halp/geometry.hpp>
8#include <magic_enum/magic_enum.hpp>
12inline QDebug operator<<(QDebug dbg,
const dynamic_geometry& geom)
14 QDebugStateSaver saver(dbg);
17 dbg <<
"dynamic_geometry {\n";
20 dbg <<
" vertices: " << geom.vertices <<
"\n";
21 dbg <<
" topology: " << magic_enum::enum_name(geom.topology) <<
"\n";
22 dbg <<
" cull_mode: " << magic_enum::enum_name(geom.cull_mode) <<
"\n";
23 dbg <<
" front_face: " << magic_enum::enum_name(geom.front_face) <<
"\n";
26 dbg <<
" buffers[" << geom.buffers.size() <<
"]: {\n";
27 for(std::size_t i = 0; i < geom.buffers.size(); ++i)
29 const auto& buf = geom.buffers[i];
30 dbg <<
" [" << i <<
"] { ralw_data: " << buf.raw_data
31 <<
", size: " << buf.byte_size <<
", dirty: " << (buf.dirty ?
"true" :
"false")
37 dbg <<
" bindings[" << geom.bindings.size() <<
"]: {\n";
38 for(std::size_t i = 0; i < geom.bindings.size(); ++i)
40 const auto& bind = geom.bindings[i];
41 dbg <<
" [" << i <<
"] { stride: " << bind.stride
42 <<
", step_rate: " << bind.step_rate
43 <<
", classification: " << magic_enum::enum_name(bind.classification) <<
" }\n";
48 dbg <<
" attributes[" << geom.attributes.size() <<
"]: {\n";
49 for(std::size_t i = 0; i < geom.attributes.size(); ++i)
51 const auto& attr = geom.attributes[i];
52 dbg <<
" [" << i <<
"] { binding: " << attr.binding
53 <<
", location: " << magic_enum::enum_name(attr.location)
54 <<
", format: " << magic_enum::enum_name(attr.format)
55 <<
", offset: " << attr.byte_offset <<
" }\n";
60 dbg <<
" input[" << geom.input.size() <<
"]: {\n";
61 for(std::size_t i = 0; i < geom.input.size(); ++i)
63 const auto& inp = geom.input[i];
64 dbg <<
" [" << i <<
"] { buffer: " << inp.buffer
65 <<
", offset: " << inp.byte_offset <<
" }\n";
70 dbg <<
" index: { buffer: " << geom.index.buffer;
71 if(geom.index.buffer >= 0)
73 dbg <<
", offset: " << geom.index.byte_offset
74 <<
", format: " << magic_enum::enum_name(geom.index.format);
86inline QDebug operator<<(QDebug dbg,
const dynamic_gpu_geometry& geom)
88 QDebugStateSaver saver(dbg);
91 dbg <<
"dynamic_gpu_geometry {\n";
94 dbg <<
" vertices: " << geom.vertices <<
"\n";
95 dbg <<
" topology: " << magic_enum::enum_name(geom.topology) <<
"\n";
96 dbg <<
" cull_mode: " << magic_enum::enum_name(geom.cull_mode) <<
"\n";
97 dbg <<
" front_face: " << magic_enum::enum_name(geom.front_face) <<
"\n";
100 dbg <<
" buffers[" << geom.buffers.size() <<
"]: {\n";
101 for(std::size_t i = 0; i < geom.buffers.size(); ++i)
103 const auto& buf = geom.buffers[i];
104 dbg <<
" [" << i <<
"] { handle: " << buf.handle <<
", size: " << buf.byte_size
105 <<
", dirty: " << (buf.dirty ?
"true" :
"false") <<
" }\n";
110 dbg <<
" bindings[" << geom.bindings.size() <<
"]: {\n";
111 for(std::size_t i = 0; i < geom.bindings.size(); ++i)
113 const auto& bind = geom.bindings[i];
114 dbg <<
" [" << i <<
"] { stride: " << bind.stride
115 <<
", step_rate: " << bind.step_rate
116 <<
", classification: " << magic_enum::enum_name(bind.classification) <<
" }\n";
121 dbg <<
" attributes[" << geom.attributes.size() <<
"]: {\n";
122 for(std::size_t i = 0; i < geom.attributes.size(); ++i)
124 const auto& attr = geom.attributes[i];
125 dbg <<
" [" << i <<
"] { binding: " << attr.binding
126 <<
", location: " << magic_enum::enum_name(attr.location)
127 <<
", format: " << magic_enum::enum_name(attr.format)
128 <<
", offset: " << attr.byte_offset <<
" }\n";
133 dbg <<
" input[" << geom.input.size() <<
"]: {\n";
134 for(std::size_t i = 0; i < geom.input.size(); ++i)
136 const auto& inp = geom.input[i];
137 dbg <<
" [" << i <<
"] { buffer: " << inp.buffer
138 <<
", offset: " << inp.byte_offset <<
" }\n";
143 dbg <<
" index: { buffer: " << geom.index.buffer;
144 if(geom.index.buffer >= 0)
146 dbg <<
", offset: " << geom.index.byte_offset
147 <<
", format: " << magic_enum::enum_name(geom.index.format);