20 halp_meta(name,
"Texture to buffer")
21 halp_meta(category,
"Visuals/Utilities")
22 halp_meta(c_name,
"texture_to_buffer")
23 halp_meta(description,
"Copy texture pixel data into a GPU buffer for further processing.")
24 halp_meta(manual_url,
"https://ossia.io/score-docs/processes/texture-to-buffer.html")
25 halp_meta(uuid,
"fd7d6339-c745-4733-a1c2-6ebd0a25fd92")
29 halp::texture_input<
"Texture", halp::custom_variable_texture> texture;
33 halp::gpu_buffer_output<
"Buffer"> buffer;
39 outputs.buffer.buffer.handle =
nullptr;
40 outputs.buffer.buffer.byte_size = 0;
41 outputs.buffer.buffer.byte_offset = 0;
42 outputs.buffer.buffer.changed =
true;
44 if(!inputs.texture.texture.bytes)
46 auto bytes = inputs.texture.texture.bytesize();
49 renderer.releaseBuffer(buf);
53 buf = renderer.state.rhi->newBuffer(QRhiBuffer::Static, QRhiBuffer::StorageBuffer | QRhiBuffer::VertexBuffer, bytes);
61 outputs.buffer.buffer.handle = buf;
62 outputs.buffer.buffer.byte_size = bytes;
63 outputs.buffer.buffer.byte_offset = 0;
64 outputs.buffer.buffer.changed =
true;
71 if(!buf || inputs.texture.texture.bytesize() != buf->size())
82 if(inputs.texture.texture.bytes && outputs.buffer.buffer.handle != buf)
84 outputs.buffer.buffer.handle = buf;
85 outputs.buffer.buffer.byte_size = buf->size();
86 outputs.buffer.buffer.byte_offset = 0;
87 outputs.buffer.buffer.changed =
true;
100 outputs.buffer.buffer.handle =
nullptr;
101 outputs.buffer.buffer.byte_size = 0;
102 outputs.buffer.buffer.changed =
true;
105 void runInitialPasses(
109 if(!inputs.texture.texture.bytes)
113 auto sz = buf->size();
114 if(inputs.texture.texture.bytesize() != sz)
118 res->uploadStaticBuffer(
120 QByteArray::fromRawData((
const char*)inputs.texture.texture.bytes, sz));
Definition TextureToBuffer.hpp:18
Definition TextureToBuffer.hpp:28