diff --git a/BaseGLProject/BaseGLProject.vcxproj b/BaseGLProject/BaseGLProject.vcxproj
index b50e812..7d58e40 100644
--- a/BaseGLProject/BaseGLProject.vcxproj
+++ b/BaseGLProject/BaseGLProject.vcxproj
@@ -208,6 +208,10 @@
+
+
+
+
diff --git a/BaseGLProject/BaseGLProject.vcxproj.filters b/BaseGLProject/BaseGLProject.vcxproj.filters
index 1dfe156..45b7284 100644
--- a/BaseGLProject/BaseGLProject.vcxproj.filters
+++ b/BaseGLProject/BaseGLProject.vcxproj.filters
@@ -164,4 +164,12 @@
Shaders
+
+
+ Resource Files
+
+
+ Resource Files
+
+
\ No newline at end of file
diff --git a/BaseGLProject/Dataset.h b/BaseGLProject/Dataset.h
index 4ebc039..2e69500 100644
--- a/BaseGLProject/Dataset.h
+++ b/BaseGLProject/Dataset.h
@@ -15,10 +15,13 @@ public:
{
vertices.clear();
normals.clear();
+ colors.clear();
+ tex_mapping.clear();
}
void simpleCube()
{
+ clear();
vertices = { { -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},
{ 1.0, -1.0, 1.0}, { 1.0, -1.0, -1.0}, { 1.0, 1.0, -1.0},
@@ -67,55 +70,47 @@ public:
void simpleFloor()
{
+ clear();
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} };
- genEmptyTexture();
genNormals();
}
void checkeredFloor(float size, int squares,
glm::vec3 light_color, glm::vec3 dark_color)
{
+ clear();
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);
- }
+ 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);
}
- genEmptyTexture();
- genNormals();
+ color *= -1;
+ }
+ genNormals();
}
-private:
- void genEmptyTexture()
- {
- tex_mapping.clear();
- for (auto vert : vertices)
- for (int i = 0; i < 6; i++)
- tex_mapping.push_back(glm::vec2(0, 0));
- }
+private:
void genNormals()
{
diff --git a/BaseGLProject/Models/Mesh.cpp b/BaseGLProject/Models/Mesh.cpp
index 972540b..0eaf2bd 100644
--- a/BaseGLProject/Models/Mesh.cpp
+++ b/BaseGLProject/Models/Mesh.cpp
@@ -22,6 +22,7 @@ Mesh::MeshEntry::MeshEntry(Dataset &set, Mesh *m)
{
renderType = NO_INDEX;
parent = m;
+ shininessStrength = 0;
vbo[VERTEX_BUFFER] = NULL;
vbo[NORMAL_BUFFER] = NULL;
@@ -51,27 +52,30 @@ Mesh::MeshEntry::MeshEntry(Dataset &set, Mesh *m)
glEnableVertexAttribArray(NORMAL_BUFFER);
//Copy texture mapping to VBO
+ if (set.tex_mapping.size() > 0)
+ {
+ glGenBuffers(1, &vbo[TEXCOORD_BUFFER]);
+ glBindBuffer(GL_ARRAY_BUFFER, vbo[TEXCOORD_BUFFER]);
+ glBufferData(GL_ARRAY_BUFFER, 2 * set.tex_mapping.size() * sizeof(GLfloat), set.tex_mapping.data(), GL_STATIC_DRAW);
- glGenBuffers(1, &vbo[TEXCOORD_BUFFER]);
- glBindBuffer(GL_ARRAY_BUFFER, vbo[TEXCOORD_BUFFER]);
- glBufferData(GL_ARRAY_BUFFER, 2 * set.tex_mapping.size() * sizeof(GLfloat), set.tex_mapping.data(), GL_STATIC_DRAW);
-
- glVertexAttribPointer(TEXCOORD_BUFFER, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 2, NULL);
- glEnableVertexAttribArray(TEXCOORD_BUFFER);
+ glVertexAttribPointer(TEXCOORD_BUFFER, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 2, NULL);
+ glEnableVertexAttribArray(TEXCOORD_BUFFER);
+ }
//Copy vertice color to VBO
+ if (set.colors.size() > 0)
+ {
+ glGenBuffers(1, &vbo[COLOR_BUFFER]);
+ glBindBuffer(GL_ARRAY_BUFFER, vbo[COLOR_BUFFER]);
+ glBufferData(GL_ARRAY_BUFFER, set.colors.size() * 3 * sizeof(GLfloat), set.colors.data(), GL_STATIC_DRAW);
- glGenBuffers(1, &vbo[COLOR_BUFFER]);
- glBindBuffer(GL_ARRAY_BUFFER, vbo[COLOR_BUFFER]);
- glBufferData(GL_ARRAY_BUFFER, set.colors.size() * 3 * sizeof(GLfloat), set.colors.data(), GL_STATIC_DRAW);
-
- glVertexAttribPointer(COLOR_BUFFER, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, NULL);
- glEnableVertexAttribArray(COLOR_BUFFER);
+ glVertexAttribPointer(COLOR_BUFFER, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, NULL);
+ glEnableVertexAttribArray(COLOR_BUFFER);
+ }
dset_size = set.vertices.size();
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
- shininessStrength = 0;
}
@@ -208,8 +212,9 @@ Mesh::MeshEntry::~MeshEntry() {
/**
* Renders this MeshEntry
**/
-void Mesh::MeshEntry::render() {
+void Mesh::MeshEntry::render(SceneContext ctx) {
+ glBindTexture(GL_TEXTURE_2D, ctx.textures);
glBindVertexArray(vao);
if (renderType == NO_INDEX)
{
@@ -222,6 +227,7 @@ void Mesh::MeshEntry::render() {
glDrawElements(GL_TRIANGLES, size / sizeof(unsigned int), GL_UNSIGNED_INT, NULL);
}
glBindVertexArray(0);
+ glBindTexture(GL_TEXTURE_2D, 0);
}
/**
@@ -333,7 +339,7 @@ void Mesh::draw(SceneContext ctx) {
shader->setUniforms(ctx);
- meshEntries.at(i)->render();
+ meshEntries.at(i)->render(ctx);
model.glPopMatrix();
}
disableCulling();
diff --git a/BaseGLProject/Models/Mesh.h b/BaseGLProject/Models/Mesh.h
index 2d8e394..e9815ff 100644
--- a/BaseGLProject/Models/Mesh.h
+++ b/BaseGLProject/Models/Mesh.h
@@ -58,7 +58,7 @@ public:
MeshEntry(Dataset &set, Mesh *m);
~MeshEntry();
Mesh * parent;
- void render();
+ void render(SceneContext ctx);
};
public:
diff --git a/BaseGLProject/MyGLWindow.cpp b/BaseGLProject/MyGLWindow.cpp
index dfab2b1..24aa21b 100644
--- a/BaseGLProject/MyGLWindow.cpp
+++ b/BaseGLProject/MyGLWindow.cpp
@@ -1,4 +1,4 @@
-#include
+#include
#include "MyGlWindow.h"
//Getting the projection matrix
glm::mat4x4 perspective(float fovy, float aspect, float near, float far)
@@ -58,8 +58,8 @@ void MyGlWindow::setBgColor(float bgColor[3])
void MyGlWindow::setup()
{
glActiveTexture(GL_TEXTURE0);
- glGenTextures(1, &_textures); //tex_2d is a member variable
- glBindTexture(GL_TEXTURE_2D, _textures);
+ glGenTextures(1, &_scnctx.textures); //tex_2d is a member variable
+ glBindTexture(GL_TEXTURE_2D, _scnctx.textures);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -67,7 +67,7 @@ void MyGlWindow::setup()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
int width, height, channel;
- unsigned char * image = stbi_load("brick.jpg", &width, &height, &channel, 0);
+ unsigned char * image = stbi_load("brick1.jpg", &width, &height, &channel, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB,
GL_UNSIGNED_BYTE, image);
@@ -76,11 +76,15 @@ void MyGlWindow::setup()
stbi_image_free(image);
glBindTexture(GL_TEXTURE_2D, 0);
- _scnctx.lights.emplace("Light1", Light(glm::vec3(0.0f, 0.5f, 0.5f), glm::vec4(10, 10, 0, 1)));
+ //Showcase lights
+ _scnctx.lights.emplace("Light1", Light(glm::vec3(0.8f), glm::vec4(3, 10, 5, 1)));
+
+ //Party lights
+ /*_scnctx.lights.emplace("Light1", Light(glm::vec3(0.0f, 0.5f, 0.5f), glm::vec4(10, 10, 0, 1)));
_scnctx.lights.emplace("Light2", Light(glm::vec3(0.0f, 0.0f, 0.5f), glm::vec4(3.09, 10, 9.51, 1)));
_scnctx.lights.emplace("Light3", Light(glm::vec3(0.5f, 0.0f, 0.0f), glm::vec4(-8.09, 10, 5.87, 1)));
_scnctx.lights.emplace("Light4", Light(glm::vec3(0.0f, 0.5f, 0.0f), glm::vec4(-8.09, 10, -5.87, 1)));
- _scnctx.lights.emplace("Light5", Light(glm::vec3(0.5f, 0.5f, 0.5f), glm::vec4(3.09, 10, -9.51, 1)));
+ _scnctx.lights.emplace("Light5", Light(glm::vec3(0.5f, 0.5f, 0.5f), glm::vec4(3.09, 10, -9.51, 1)));*/
shaders["Simple"] = new Shader("simple.vert", "simple.frag");
shaders["Simple"]->uniformFlags = ShaderFlags::MVP_FLAG;
diff --git a/BaseGLProject/MyGLWindow.h b/BaseGLProject/MyGLWindow.h
index 4d07b6f..2f971b8 100644
--- a/BaseGLProject/MyGLWindow.h
+++ b/BaseGLProject/MyGLWindow.h
@@ -38,7 +38,6 @@ private:
float _bgColor[3];
- GLuint _textures;
GLuint _vaoHandle;
GLuint _iboHandle;
diff --git a/BaseGLProject/SceneContext.h b/BaseGLProject/SceneContext.h
index 535209e..d2e22b1 100644
--- a/BaseGLProject/SceneContext.h
+++ b/BaseGLProject/SceneContext.h
@@ -15,4 +15,6 @@ struct SceneContext
glm::mat4x4 mvpMatrix;
glm::mat4x4 modelViewMatrix;
glm::mat3x3 normalMatrix;
+
+ GLuint textures;
};
\ No newline at end of file
diff --git a/BaseGLProject/Shader.h b/BaseGLProject/Shader.h
index 40caf9c..ca072d7 100644
--- a/BaseGLProject/Shader.h
+++ b/BaseGLProject/Shader.h
@@ -44,9 +44,9 @@ public:
{
_program.use(); glUniform3fv(_program.addUniform(name), 1, glm::value_ptr(data)); ; _program.disable();
}
- void addUnform(const std::string name, int data)
+ void addUniform(const std::string name, int data)
{
- _program.use(); glUniform1iv(_program.addUniform(name), 1, &data); _program.disable();
+ _program.use(); glUniform1i(_program.addUniform(name), data); _program.disable();
}
void addUniform(const std::string name, float data)
{
diff --git a/BaseGLProject/Source.cpp b/BaseGLProject/Source.cpp
index 698cb32..7ac0683 100644
--- a/BaseGLProject/Source.cpp
+++ b/BaseGLProject/Source.cpp
@@ -175,7 +175,7 @@ int loop(GLFWwindow *window)
{
ImGui::SetWindowPos(ImVec2(20, 20));
- static float bgColor[3] = { .3f, .3f, .3f };
+ static float bgColor[3] = { .0f, .0f, .1f };
ImGui::ColorEdit3("Background", bgColor, 0);
glWin.setBgColor(bgColor);
diff --git a/BaseGLProject/Resources/brick1.jpg b/BaseGLProject/brick1.jpg
similarity index 100%
rename from BaseGLProject/Resources/brick1.jpg
rename to BaseGLProject/brick1.jpg
diff --git a/BaseGLProject/Resources/earth.jpg b/BaseGLProject/earth.jpg
similarity index 100%
rename from BaseGLProject/Resources/earth.jpg
rename to BaseGLProject/earth.jpg
diff --git a/BaseGLProject/fog.vert b/BaseGLProject/fog.vert
index 9d33437..f00529b 100644
--- a/BaseGLProject/fog.vert
+++ b/BaseGLProject/fog.vert
@@ -2,8 +2,8 @@
layout(location=0) in vec3 coord3d;
layout(location=1) in vec3 v_normal;
-layout(location=2) in vec2 v_texmap;
-layout(location=3) in vec3 v_color;
+layout(location=2) in vec3 v_color;
+layout(location=3) in vec2 v_texmap;
uniform mat4 mvp;
uniform mat3 NormalMatrix;
diff --git a/BaseGLProject/light.frag b/BaseGLProject/light.frag
index 67b7445..4452a05 100644
--- a/BaseGLProject/light.frag
+++ b/BaseGLProject/light.frag
@@ -46,7 +46,6 @@ void main()
specular_sum += specular;
}
-
vec4 texColor = texture(tex1, texCoord);
- FragColors = (vec4(diffuse_sum + ambient, 1) * texColor + vec4(specular_sum, 1.0));
+ FragColors = (vec4(diffuse_sum + ambient, 1) * texColor + vec4(specular_sum, 1.0));
}
diff --git a/BaseGLProject/light.vert b/BaseGLProject/light.vert
index c22208c..c0a4ac5 100644
--- a/BaseGLProject/light.vert
+++ b/BaseGLProject/light.vert
@@ -2,8 +2,8 @@
layout(location=0) in vec3 coord3d;
layout(location=1) in vec3 v_normal;
-layout(location=2) in vec2 v_texmap;
-layout(location=3) in vec3 v_color;
+layout(location=2) in vec3 v_color;
+layout(location=3) in vec2 v_texmap;
uniform mat4 mvp;
uniform mat3 NormalMatrix;
diff --git a/BaseGLProject/silhouette.vert b/BaseGLProject/silhouette.vert
index f4b0b10..19b9e23 100644
--- a/BaseGLProject/silhouette.vert
+++ b/BaseGLProject/silhouette.vert
@@ -2,8 +2,8 @@
layout(location=0) in vec3 coord3d;
layout(location=1) in vec3 v_normal;
-layout(location=2) in vec2 v_texmap;
-layout(location=3) in vec3 v_color;
+layout(location=2) in vec3 v_color;
+layout(location=3) in vec2 v_texmap;
uniform mat4 mvp;
uniform float sil_offset;
diff --git a/BaseGLProject/simple.vert b/BaseGLProject/simple.vert
index bc84943..1aaa846 100644
--- a/BaseGLProject/simple.vert
+++ b/BaseGLProject/simple.vert
@@ -2,8 +2,9 @@
layout(location=0) in vec3 coord3d;
layout(location=1) in vec3 v_normal;
-layout(location=2) in vec2 v_texmap;
-layout(location=3) in vec3 v_color;
+layout(location=2) in vec3 v_color;
+layout(location=3) in vec2 v_texmap;
+
out vec3 f_color;