13 void _transform(
const Eigen::Affine3f &transform);
16 std::vector<Eigen::Vector3f> positions;
17 std::vector<Eigen::Vector3f> normals;
18 std::vector<Eigen::Vector2f> texcoords;
19 std::vector<Eigen::Vector3f> tangents;
20 std::vector<Eigen::Vector3f> bitangents;
21 std::vector<Eigen::Vector4f> colors;
22 std::vector<uint32_t> colors8;
23 std::vector<Eigen::Vector4f> extras;
24 std::vector<uint32_t> indices;
26 template <
class T>
MeshData &transform(
const T &transform) {
27 _transform(Eigen::Affine3f(transform));
31 MeshData &translate(
const Eigen::Vector3f &v);
33 MeshData &translate(
float x,
float y,
float z);
34 MeshData &scale(
const Eigen::Vector3f &v);
35 MeshData &scale(
float x,
float y,
float z);
37 MeshData &rotate(
float angle,
const Eigen::Vector3f &axis);
38 MeshData &colorize(
const Eigen::Vector4f &color);
39 MeshData &colorize(
float r,
float g,
float b,
float a = 1.0f);
45 ret.transform(transform);
50 bool _destructed =
false;
53 bool _transparent =
false;
54 std::function<void(MeshData &)> _loader;
55 void createBuffer(GLenum type, GLuint index,
const void *data,
size_t size,
56 size_t stride,
size_t element_size = 4,
57 GLenum datatype = GL_FLOAT,
bool normalized =
false);
69 GLuint vertexArrayObject();
70 const MeshData &data()
const {
return _data; }