PeriDyno 1.0.0
Loading...
Searching...
No Matches
GLTextureMesh.h
Go to the documentation of this file.
1
16
17#pragma once
18
19#include "GPUBuffer.h"
20#include "GraphicsObject.h"
21
23
25
26#include <glm/glm.hpp>
27
28namespace dyno
29{
30 // simple PBR material model
32 {
33 public:
34
35 GLMaterial();
36 ~GLMaterial() override;
37 void create() override;
38 void release() override;
39
40 void updateGL();
41
42 public:
43 Vec3f baseColor = { 0.8f, 0.8f, 0.8f };
44
45 float metallic = 0.0f;
46 float roughness = 1.0f;
47 float alpha = 1.0f;
48
49 float bumpScale = 1.f;
50
51 // color texture
54
55 bool mInitialized = false;
56 };
57
58 class GLShape : public GraphicsObject
59 {
60 public:
61 GLShape();
62 ~GLShape() override;
63
64 void create() override;
65 void release() override;
66
67 void updateGL();
68
72
73 glm::mat4 transform;
74
75 std::shared_ptr<GLMaterial> material = nullptr;
76
77 private:
78 bool mInitialized = false;
79 };
80
82 {
83 public:
85 ~GLTextureMesh() override;
86
87 void create() final;
88 void release() final;
89
90 void load(const std::shared_ptr<TextureMesh> mesh);
91
92 void updateGL();
93
94 inline XBuffer<Vec3f>& vertices() { return mVertices; }
95 inline XBuffer<Vec3f>& normals() { return mNormal; }
96 inline XBuffer<Vec2f>& texCoords() { return mTexCoord; }
97
98 inline std::vector<std::shared_ptr<GLShape>>& shapes() { return mShapes; }
99 inline std::vector<std::shared_ptr<GLMaterial>>& materials() { return mMaterials; }
100
101 private:
105
106 std::vector<std::shared_ptr<GLShape>> mShapes;
107 std::vector<std::shared_ptr<GLMaterial>> mMaterials;
108
109 bool mInitialized = false;
110 };
111};
~GLMaterial() override
void release() override
void create() override
XTexture2D< dyno::Vec4f > texBump
XTexture2D< dyno::Vec4f > texColor
std::shared_ptr< GLMaterial > material
XBuffer< dyno::TopologyModule::Triangle > glNormalIndex
void release() override
~GLShape() override
XBuffer< dyno::TopologyModule::Triangle > glTexCoordIndex
void create() override
glm::mat4 transform
XBuffer< dyno::TopologyModule::Triangle > glVertexIndex
XBuffer< Vec3f > & vertices()
XBuffer< Vec2f > mTexCoord
std::vector< std::shared_ptr< GLShape > > mShapes
void load(const std::shared_ptr< TextureMesh > mesh)
std::vector< std::shared_ptr< GLShape > > & shapes()
XBuffer< Vec3f > mNormal
XBuffer< Vec2f > & texCoords()
std::vector< std::shared_ptr< GLMaterial > > & materials()
std::vector< std::shared_ptr< GLMaterial > > mMaterials
XBuffer< Vec3f > mVertices
XBuffer< Vec3f > & normals()
GraphicsObject()=default
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Vector< float, 3 > Vec3f
Definition Vector3D.h:93