载入中...
搜索中...
未找到
MeshBuild.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4#include <string>
5#include <unordered_map>
6#include <vector>
7
8namespace eve::procgen {
9
14class MeshBuild {
15public:
16 void clear();
17 void reserve(int vertexCount, int indexCount);
18
19 void addVertex(float px, float py, float pz, float nx, float ny, float nz, float u, float v);
20 void addTriangle(uint32_t i0, uint32_t i1, uint32_t i2);
21
22 int getVertexCount() const;
23 int getIndexCount() const;
24 bool empty() const;
25
26 float getPositionX(int i) const;
27 float getPositionY(int i) const;
28 float getPositionZ(int i) const;
29 float getNormalX(int i) const;
30 float getNormalY(int i) const;
31 float getNormalZ(int i) const;
32 float getUvU(int i) const;
33 float getUvV(int i) const;
34 int getIndex(int i) const;
35
36 void setMeta(const std::string &key, const std::string &value);
37 std::string getMeta(const std::string &key, const std::string &defaultValue) const;
38
39 const std::vector<float> &positions() const { return positions_; }
40 const std::vector<float> &normals() const { return normals_; }
41 const std::vector<float> &uvs() const { return uvs_; }
42 const std::vector<uint32_t> &indices() const { return indices_; }
43
44 std::vector<float> &positions() { return positions_; }
45 std::vector<float> &normals() { return normals_; }
46 std::vector<float> &uvs() { return uvs_; }
47 std::vector<uint32_t> &indices() { return indices_; }
48
49private:
50 std::vector<float> positions_;
51 std::vector<float> normals_;
52 std::vector<float> uvs_;
53 std::vector<uint32_t> indices_;
54 std::unordered_map<std::string, std::string> meta_;
55};
56
57} // namespace eve::procgen
std::string value
uint32_t i1
Definition Grass.cpp:62
uint32_t i2
Definition Grass.cpp:62
uint32_t i0
Definition Grass.cpp:62
float u
Definition Grass.cpp:234
std::vector< Colorf > px
int v
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:14
float getPositionZ(int i) const
Definition MeshBuild.cpp:52
const std::vector< float > & positions() const
Definition MeshBuild.h:39
float getPositionY(int i) const
Definition MeshBuild.cpp:48
std::string getMeta(const std::string &key, const std::string &defaultValue) const
Definition MeshBuild.cpp:83
void addVertex(float px, float py, float pz, float nx, float ny, float nz, float u, float v)
Definition MeshBuild.cpp:22
const std::vector< float > & normals() const
Definition MeshBuild.h:40
void addTriangle(uint32_t i0, uint32_t i1, uint32_t i2)
Definition MeshBuild.cpp:34
float getNormalZ(int i) const
Definition MeshBuild.cpp:64
void reserve(int vertexCount, int indexCount)
Definition MeshBuild.cpp:13
void setMeta(const std::string &key, const std::string &value)
Definition MeshBuild.cpp:81
std::vector< uint32_t > & indices()
Definition MeshBuild.h:47
float getNormalY(int i) const
Definition MeshBuild.cpp:60
int getIndexCount() const
Definition MeshBuild.cpp:41
std::vector< float > & uvs()
Definition MeshBuild.h:46
float getUvU(int i) const
Definition MeshBuild.cpp:68
int getVertexCount() const
Definition MeshBuild.cpp:40
float getUvV(int i) const
Definition MeshBuild.cpp:72
float getNormalX(int i) const
Definition MeshBuild.cpp:56
int getIndex(int i) const
Definition MeshBuild.cpp:76
std::vector< float > & normals()
Definition MeshBuild.h:45
std::vector< float > & positions()
Definition MeshBuild.h:44
float getPositionX(int i) const
Definition MeshBuild.cpp:44
const std::vector< float > & uvs() const
Definition MeshBuild.h:41
const std::vector< uint32_t > & indices() const
Definition MeshBuild.h:42