Blender V5.0
ply_file_buffer_binary.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
10
12
13namespace blender::io::ply {
14void FileBufferBinary::write_vertex(float x, float y, float z)
15{
16 float3 vector(x, y, z);
17 char *bits = reinterpret_cast<char *>(&vector);
18 Span<char> span(bits, sizeof(float3));
19
20 write_bytes(span);
21}
22
23void FileBufferBinary::write_UV(float u, float v)
24{
25 float2 vector(u, v);
26 char *bits = reinterpret_cast<char *>(&vector);
27 Span<char> span(bits, sizeof(float2));
28
29 write_bytes(span);
30}
31
33{
34 char *bits = reinterpret_cast<char *>(&v);
35 Span<char> span(bits, sizeof(float));
36
37 write_bytes(span);
38}
39
40void FileBufferBinary::write_vertex_normal(float nx, float ny, float nz)
41{
42 float3 vector(nx, ny, nz);
43 char *bits = reinterpret_cast<char *>(&vector);
44 Span<char> span(bits, sizeof(float3));
45
46 write_bytes(span);
47}
48
50{
51 uchar4 vector(r, g, b, a);
52 char *bits = reinterpret_cast<char *>(&vector);
53 Span<char> span(bits, sizeof(uchar4));
54
55 write_bytes(span);
56}
57
59{
60 /* In binary, there is no end to a vertex. */
61}
62
63void FileBufferBinary::write_face(char size, Span<uint32_t> const &vertex_indices)
64{
66
67 write_bytes(vertex_indices.cast<char>());
68}
69
70void FileBufferBinary::write_edge(int first, int second)
71{
72 int2 vector(first, second);
73 char *bits = reinterpret_cast<char *>(&vector);
74 Span<char> span(bits, sizeof(int2));
75
76 write_bytes(span);
77}
78} // namespace blender::io::ply
unsigned char uchar
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
Definition btQuadWord.h:117
Span< NewT > constexpr cast() const
Definition BLI_span.hh:418
void write_vertex_normal(float nx, float ny, float nz) override
void write_vertex_color(uchar r, uchar g, uchar b, uchar a) override
void write_UV(float u, float v) override
void write_face(char size, Span< uint32_t > const &vertex_indices) override
void write_vertex(float x, float y, float z) override
void write_edge(int first, int second) override
void write_bytes(Span< char > bytes)
blender::VecBase< uint8_t, 4 > uchar4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
VecBase< float, 3 > float3