Colored dataset started working : no indexes yet, neither working with standard light
This commit is contained in:
parent
638571af42
commit
babd5c06fd
@ -6,10 +6,9 @@ public:
|
||||
Dataset() {}
|
||||
~Dataset() {}
|
||||
|
||||
unsigned int nFaces;
|
||||
unsigned int nVertices;
|
||||
std::vector<glm::vec3> vertices;
|
||||
std::vector<glm::vec3> normals;
|
||||
std::vector<glm::vec3> colors;
|
||||
|
||||
void clear()
|
||||
{
|
||||
@ -32,14 +31,64 @@ public:
|
||||
{ -1.0, 1.0, 1.0}, { 1.0, 1.0, 1.0}, { 1.0, 1.0, -1.0},
|
||||
{ 1.0, 1.0, -1.0}, { -1.0, 1.0, -1.0}, { -1.0, 1.0, 1.0} };
|
||||
|
||||
colors = {
|
||||
{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0},
|
||||
{0.0, 0.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, 0.0, 0.0},
|
||||
{0.0, 1.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0},
|
||||
{0.0, 0.0, 1.0}, {0.0, 0.0, 1.0}, {0.0, 1.0, 0.0},
|
||||
{1.0, 1.0, 1.0}, {0.0, 0.0, 1.0}, {0.0, 1.0, 0.0},
|
||||
{0.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, {1.0, 1.0, 1.0},
|
||||
{1.0, 0.0, 0.0}, {1.0, 0.0, 0.0}, {1.0, 1.0, 1.0},
|
||||
{1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, 0.0, 0.0},
|
||||
{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 1.0, 0.0},
|
||||
{0.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, {1.0, 0.0, 0.0},
|
||||
{1.0, 1.0, 1.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, 1.0},
|
||||
{0.0, 0.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}
|
||||
},
|
||||
|
||||
genNormals();
|
||||
nVertices = vertices.size();
|
||||
}
|
||||
|
||||
void simpleFloor()
|
||||
{
|
||||
|
||||
{
|
||||
vertices = {{-10.0, 0.0, -10.0}, {-10.0, 0.0, 10.0}, {10.0, 0.0, -10.0},
|
||||
{10.0, 0.0, 10.0}, {10.0, 0.0, -10.0}, {-10.0, 0.0, 10.0}};
|
||||
colors = { {0.7, 0.7, 0.7}, {0.7, 0.7, 0.7}, {0.7, 0.7, 0.7},
|
||||
{0.7, 0.7, 0.7}, {0.7, 0.7, 0.7}, {0.7, 0.7, 0.7} };
|
||||
genNormals();
|
||||
}
|
||||
|
||||
void checkeredFloor(float size, int squares,
|
||||
glm::vec3 light_color, glm::vec3 dark_color)
|
||||
{
|
||||
float maxX = size / 2.f, maxY = size / 2.f;
|
||||
float minX = -size / 2.f, minY = -size / 2.f;
|
||||
float side_size = size / (float)squares;
|
||||
int color = 1;
|
||||
|
||||
for (float x = minX; x < maxX; x += side_size)
|
||||
{
|
||||
for (float y = minY; y < maxY; y += side_size)
|
||||
{
|
||||
color *= -1;
|
||||
glm::vec3 tile_color = (color > 0) ? light_color : dark_color;
|
||||
//gen 1 carré
|
||||
vertices.emplace_back(x, 0, y); //upleft
|
||||
vertices.emplace_back(x, 0, y + side_size); //downleft
|
||||
vertices.emplace_back(x + side_size, 0, y + side_size); //downright
|
||||
|
||||
vertices.emplace_back(x + side_size, 0, y + side_size); //downright
|
||||
vertices.emplace_back(x + side_size, 0, y); //upright
|
||||
vertices.emplace_back(x, 0, y); //upleft
|
||||
|
||||
for (int z = 0; z < 6; z++)
|
||||
colors.push_back(tile_color);
|
||||
}
|
||||
color *= -1;
|
||||
}
|
||||
genNormals();
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void genNormals()
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
#define GLM_ENABLE_EXPERIMENTAL
|
||||
|
||||
#include <vector>
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
Mesh::MeshEntry::MeshEntry(Dataset &set, Mesh *m)
|
||||
{
|
||||
renderType = NO_INDEX;
|
||||
parent = m;
|
||||
|
||||
vbo[VERTEX_BUFFER] = NULL;
|
||||
@ -28,47 +29,47 @@ Mesh::MeshEntry::MeshEntry(Dataset &set, Mesh *m)
|
||||
vbo[INDEX_BUFFER] = NULL;
|
||||
|
||||
glGenVertexArrays(1, &vao);
|
||||
glBindVertexArray(vao);
|
||||
|
||||
glBindVertexArray(vao);
|
||||
|
||||
float *vertices = new float[set.nVertices * 3];
|
||||
for (unsigned int i = 0; i < set.nVertices; ++i) {
|
||||
vertices[i * 3] = set.vertices[i].x;
|
||||
vertices[i * 3 + 1] = set.vertices[i].y;
|
||||
vertices[i * 3 + 2] = set.vertices[i].z;
|
||||
}
|
||||
//Copy Mesh vertices to VBO
|
||||
|
||||
glGenBuffers(1, &vbo[VERTEX_BUFFER]);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vbo[VERTEX_BUFFER]);
|
||||
glBufferData(GL_ARRAY_BUFFER, 3 * set.nVertices * sizeof(GLfloat), vertices, GL_STATIC_DRAW);
|
||||
glBufferData(GL_ARRAY_BUFFER, set.vertices.size() * 3 * sizeof(GLfloat), set.vertices.data(), GL_STATIC_DRAW);
|
||||
|
||||
glVertexAttribPointer(VERTEX_BUFFER, 3, GL_FLOAT, GL_FALSE, 0, NULL);
|
||||
glVertexAttribPointer(VERTEX_BUFFER, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, NULL);
|
||||
glEnableVertexAttribArray(VERTEX_BUFFER);
|
||||
|
||||
delete[] vertices;
|
||||
|
||||
float *normals = new float[set.nVertices * 3];
|
||||
for (unsigned int i = 0; i < set.nVertices; ++i) {
|
||||
normals[i * 3] = set.normals[i].x;
|
||||
normals[i * 3 + 1] = set.normals[i].y;
|
||||
normals[i * 3 + 2] = set.normals[i].z;
|
||||
}
|
||||
//Copy Normals to VBO
|
||||
|
||||
glGenBuffers(1, &vbo[NORMAL_BUFFER]);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vbo[NORMAL_BUFFER]);
|
||||
glBufferData(GL_ARRAY_BUFFER, 3 * set.nVertices * sizeof(GLfloat), normals, GL_STATIC_DRAW);
|
||||
glBufferData(GL_ARRAY_BUFFER, set.normals.size() * 3 * sizeof(GLfloat), set.normals.data(), GL_STATIC_DRAW);
|
||||
|
||||
glVertexAttribPointer(NORMAL_BUFFER, 3, GL_FLOAT, GL_FALSE, 0, NULL);
|
||||
glVertexAttribPointer(NORMAL_BUFFER, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, NULL);
|
||||
glEnableVertexAttribArray(NORMAL_BUFFER);
|
||||
|
||||
delete[] normals;
|
||||
//Copy vertice color to VBO
|
||||
|
||||
glGenBuffers(1, &vbo[TEXCOORD_BUFFER]);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vbo[TEXCOORD_BUFFER]);
|
||||
glBufferData(GL_ARRAY_BUFFER, set.colors.size() * 3 * sizeof(GLfloat), set.colors.data(), GL_STATIC_DRAW);
|
||||
|
||||
glVertexAttribPointer(TEXCOORD_BUFFER, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, NULL);
|
||||
glEnableVertexAttribArray(TEXCOORD_BUFFER);
|
||||
|
||||
|
||||
|
||||
dset_size = set.vertices.size();
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
glBindVertexArray(0);
|
||||
shininessStrength = 0;
|
||||
|
||||
}
|
||||
|
||||
Mesh::MeshEntry::MeshEntry(aiMesh *mesh, const aiScene* scene, Mesh * m)
|
||||
{
|
||||
renderType = OBJ;
|
||||
parent = m;
|
||||
|
||||
vbo[VERTEX_BUFFER] = NULL;
|
||||
@ -197,9 +198,16 @@ Mesh::MeshEntry::~MeshEntry() {
|
||||
void Mesh::MeshEntry::render() {
|
||||
|
||||